제출 #534495

#제출 시각아이디문제언어결과실행 시간메모리
534495amunduzbaevSum Zero (RMI20_sumzero)C++17
61 / 100
415 ms27876 KiB
#include "bits/stdc++.h" using namespace std; #define ar array const int N = 4e5 + 5; int par[N][5]; 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]; memset(par, -1, sizeof par); unordered_map<long long, int> last; long long 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<5;j++){ for(int i=0;i<n;i++){ int x = i; for(int l=0;l<16 && ~x;l++){ x = par[x][j-1]; } par[i][j] = x; } } int q; cin>>q; while(q--){ int l, r; cin>>l>>r; l--; int res = 0; for(int j=4;~j;){ if(~par[l][j] && par[l][j] <= r){ l = par[l][j]; res += (1 << (j * 4)); } else j--; } cout<<res<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...