Submission
# | When | Author | Problem | Language | CPU | Memory | |
---|---|---|---|---|---|---|---|
5486 | 2022-06-02 19:35:20 | cu_iupc_79 | Maximum Subarray Length | C++ 17 | 511 ms | 8324 kb | Accepted |
Source Code
#include<bits/stdc++.h> #define all(x) x.begin(),x.end() #define rep(i,a,n) for(auto i = (a) ; i <= (n) ; i++) #define per(i,a,n) for(auto i = (a) ; i >= (n) ; i--) using ll = long long int; using namespace std; class Solution{ private: int LCS(int arr[],int n,int k){ unordered_map<int, int> um; int sum = 0, maxLen = 0; for (int i = 0; i < n; i++) { sum += arr[i]; if (sum == k) maxLen = i + 1; if (um.find(sum) == um.end()) um[sum] = i; if (um.find(sum - k) != um.end()) { if (maxLen < (i - um[sum - k])) maxLen = i - um[sum - k]; } } return maxLen; } public: void solve(){ int n;cin >> n; int arr[n]; int k = 1; for(int i = 0 ; i < n ; i++){ cin >> arr[i]; k = min(arr[i],k); } cout << LCS(arr,n,k) << endl; } }; int main(){ ios_base::sync_with_stdio(false); Solution oop; int t;cin>>t; rep(i,1,t)oop.solve(); return 0; }