Submission #1130817

#TimeUsernameProblemLanguageResultExecution timeMemory
1130817VMaksimoski008Sum Zero (RMI20_sumzero)C++17
22 / 100
71 ms7492 KiB
#include <bits/stdc++.h> #define ar array //#define int long long using namespace std; using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; const int mod = 1e9 + 7; const int LOG = 20; const int maxn = 4e5 + 5; int n, a[maxn], q, up[maxn][10]; signed main() { ios_base::sync_with_stdio(false); cout.tie(0); cin.tie(0); cin >> n; for(int i=1; i<=n; i++) cin >> a[i]; up[n+1][0] = n+2; up[n+2][0] = n+2; map<ll, int> mp; mp[0] = n+1; ll sum = 0; for(int i=n; i>=1; i--) { sum += a[i]; up[i][0] = n+2; if(mp.count(sum)) up[i][0] = mp[sum]; mp[sum] = i; if(i < n) up[i][0] = min(up[i][0], up[i+1][0]); } for(int i=1; i<10; i++) for(int u=1; u<=n+2; u++) up[u][i] = up[up[u][i-1]][i-1]; cin >> q; while(q--) { int l, r, ans = 0; cin >> l >> r; r++; for(int j=9; j>=0; j--) { while(up[l][j] <= r) { ans |= (1 << j); l = up[l][j]; } } cout << ans << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...