Submission #846888

#TimeUsernameProblemLanguageResultExecution timeMemory
846888TahirAliyevSum Zero (RMI20_sumzero)C++17
0 / 100
147 ms2904 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long int #define oo 1e9 #define pii pair<int, int> const int MAX = 4e5 + 5; int n, q; int arr[MAX]; int presum[MAX]; int R[MAX]; int dp[MAX]; int main(){ cin >> n; set<pii> s; s.insert({0, 0}); for(int i = 1; i <= n; i++){ cin >> arr[i]; presum[i] = presum[i - 1] + arr[i]; s.insert({presum[i], i}); } for(int l = 0; l < n; l++){ s.erase(s.find({presum[l], l})); auto itr = s.lower_bound({presum[l], 0}); if(itr == s.end() || (*itr).first != presum[l]) continue; cout << l + 1 << ' ' << (*itr).first << ' ' << (*itr).second << '\n'; R[l + 1] = (*itr).second; } cin >> q; while(q--){ memset(dp, 0, sizeof(dp)); int l, r; cin >> l >> r; for(int i = r; i >= l; i--){ if(R[i] > r || R[i] == 0){ dp[i] = dp[i + 1]; continue; } dp[i] = max(dp[i + 1], dp[R[i] + 1] + 1); } cout << dp[l] << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...