Submission #1272618

#TimeUsernameProblemLanguageResultExecution timeMemory
1272618horkaSum Zero (RMI20_sumzero)C++20
61 / 100
730 ms22532 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int c=4e5+10,gy=500; int kov[c],ki[c],lep[c]; int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin>>n; vector<ll> pref(n+1); for(int i=1; i<=n; i++) { int x; cin>>x; pref[i]=pref[i-1]+x; } map<ll, int> ind; kov[n+1]=n+1; for(int i=n; i>=0; i--) { kov[i]=kov[i+1]; if(ind.count(pref[i])) { kov[i]=min(kov[i],ind[pref[i]]); } ind[pref[i]]=i; } for(int i=n; i>=0; i--) { if(kov[i]>n) { ki[i]=n+1; } else { int x=(i-1)/gy,y=(kov[i]-1)/gy; if(x==y) ki[i]=ki[kov[i]],lep[i]=lep[kov[i]]+1; else ki[i]=kov[i],lep[i]=1; } } int q; cin>>q; while(q--) { int l,r; cin>>l>>r; int ans=0; l--; while(ki[l]<=r) { ans+=lep[l],l=ki[l]; } while(kov[l]<=r) ans++,l=kov[l]; cout<<ans<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...