Submission #534442

#TimeUsernameProblemLanguageResultExecution timeMemory
534442amunduzbaevSum Zero (RMI20_sumzero)C++17
61 / 100
854 ms64696 KiB
#include "bits/stdc++.h" using namespace std; #define ar array signed main(){ ios::sync_with_stdio(0); cin.tie(0); int n; cin>>n; vector<int> a(n); for(int i=0;i<n;i++) cin>>a[i]; vector<vector<int>> par(n + 1, vector<int>(20, -1)); map<int, int> last; int pref = 0; last[pref] = n; for(int i=n-1;~i;i--){ pref += a[i]; if(last.count(pref)) par[i][0] = last[pref]; last[pref] = i; if(i + 1 < n && ~par[i+1][0]){ if(par[i][0] == -1) par[i][0] = par[i+1][0]; else par[i][0] = min(par[i][0], par[i+1][0]); } } for(int j=1;j<20;j++){ for(int i=0;i<n;i++){ if(~par[i][j-1]) par[i][j] = par[par[i][j-1]][j-1]; } } int q; cin>>q; while(q--){ int l, r; cin>>l>>r; l--; int res = 0; for(int j=19;~j && l < n;j--){ if(~par[l][j] && par[l][j] <= r){ res += (1 << j), l = par[l][j]; } } cout<<res<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...