Submission #1241981

#TimeUsernameProblemLanguageResultExecution timeMemory
1241981m.zeeshanrashidSum Zero (RMI20_sumzero)C++20
61 / 100
473 ms22532 KiB
// #ifdef __AVX2__ // #pragma GCC target "avx2" // #endif #pragma GCC optimize "O3" #pragma GCC optimize "unroll-loops" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; // #define int long long // #define elif else if // #define all(l) begin(l),end(l) // #define rall(l) rbegin(l),rend(l) // #define append push_back // #define print(l) for(auto i:l) cout<<i<<' '; cout<<endl; // #define pprint(a,b) cout<<a<<' '<<b<<endl; // #define inp(l) for(auto &i:l) cin>>i; // #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> // #define pai make_pair #define endl "\n" // #define pii pair<int,int> // #define fi first // #define se second // #define vec vector #define ll long long const int mod1=998244353; const int mod=1e9+7; const int N=4e5+5,lg=4; int sp[N][lg]; int po[lg],powe=30; int iter=1,itera=1; void solve(){ po[0]=1; for(int i=1;i<lg;i++) po[i]=po[i-1]*powe; int n,q; cin>>n; int c[n+1]; for(int i=1;i<=n;i++) cin>>c[i]; map<ll,int>d; ll s=0; for(int i=1;i<=n;i++){ s+=c[i]; d[s]=-1; } d[0]=0; s=0; for(int i=0;i<=n;i++){ for(int j=0;j<lg;j++) sp[i][j]=-1; } for(int i=1;i<=n;i++){ s+=c[i]; sp[i][0]=max(sp[i-1][0],d[s]+1); for(int j=1;j<lg;j++){ int a=i; for(int te=0;te<powe-1;te++){ a=sp[a][j-1]; if(a<1) break; a--; } a++; if(a<1) break; sp[i][j]=sp[a-1][j-1]; } d[s]=i; } cin>>q; for(int i=0;i<q;i++){ int l,r; cin>>l>>r; int ans=0; for(int j=lg-1;j>=0;j--){ for(int xyz=0;xyz<powe-1;xyz++){ if(sp[r][j]>=l){ ans+=po[j]; r=sp[r][j]-1; } } } cout<<ans<<endl; } } signed main(){ // freopen("","r",stdin); // freopen("","w",stdout); ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // cin>>itera; for(iter=1;iter<=itera;iter++) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...