제출 #1272607

#제출 시각아이디문제언어결과실행 시간메모리
1272607algoproclubSum Zero (RMI20_sumzero)C++20
0 / 100
2 ms824 KiB
// UUID: 6f85f705-496a-4070-b4de-92a6dbecff01 #include <bits/stdc++.h> using namespace std; using ll = long long; const int c=4e5+10,k=19; int kov[c][k]; 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; for(int i=n; i>=0; i--) { kov[i][0]=kov[i+1][0]; if(ind.count(pref[i])) { kov[i][0]=min(kov[i][0],ind[pref[i]]); } ind[pref[i]]=i; } for(int j=0; j<k; j++) kov[n+1][j]=n+1; for(int j=1; j<k; j++) for(int i=0; i<=n; i++) kov[i][j]=kov[kov[i][j-1]][j-1]; int q; cin>>q; while(q--) { int l,r; cin>>l>>r; int ans=0; l--; for(int i=k-1; i>=0; i--) { if(kov[l][i]<=r) { ans+=(1<<i); l=kov[l][i]; } } cout<<ans<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...