Submission #1092734

#TimeUsernameProblemLanguageResultExecution timeMemory
1092734De3b0oSum Zero (RMI20_sumzero)C++17
61 / 100
355 ms20820 KiB
#include<bits/stdc++.h> #include<random> #define ll long long #define F first #define S second #define in insert #define pb push_back #define ppb pop_back() #define d3 ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define cans cout << ans << "\n"; #define yes cout << "Yes" << "\n"; #define no cout << "No" << "\n"; #define pll pair<ll,ll> #define lin cout << "\n"; #define sqr 340 #define mod 1000000007 #define mid ((l+r)/2) #define lc (2*x) #define rc (2*x+1) using namespace std; const int N = 400009; int po = 14; int16_t lo = 5; int n; int p[N]; map<int,int> mp; int b[N][5]; int pwr[5]; int main() { d3 cin >> n; for(int i = 1 ; n>=i ; i++) { cin >> p[i]; p[i]+=p[i-1]; } for(int i = 1 ; n>=i ; i++) b[i][0]=n+1; mp[0]=0; for(int i = 1 ; n>=i ; i++) { if(mp[p[i]]==0&&p[i]!=0) { mp[p[i]]=i; continue; } int e = mp[p[i]]+1; mp[p[i]]=i; b[e][0]=min(b[e][0],i); } for(int16_t j = 0 ; lo>j ; j++) b[n+1][j]=n+1; for(int i = n ; i>0 ; i--) b[i][0]=min(b[i][0],b[i+1][0]); for(int16_t j = 1 ; lo>j ; j++) { for(int i = 1 ; n>=i ; i++) { int16_t sz = po-1; b[i][j]=b[i][j-1]; while(sz--) { b[i][j]=b[b[i][j]+1][j-1]; if(b[i][j]==0) b[i][j]=n+1; } } } pwr[0]=1; for(int i = 1 ; lo>i ; i++) pwr[i]=pwr[i-1]*po; cin >> n; while(n--) { int l , r; cin >> l >> r; int ans = 0; for(int16_t j = lo-1 ; j>=0 ; j--) { if(l>r) break; while(true) { if(b[l][j]>r) break; ans+=pwr[j]; l=b[l][j]+1; } } cans } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...