Submission #947862

#TimeUsernameProblemLanguageResultExecution timeMemory
947862pccSum Zero (RMI20_sumzero)C++17
22 / 100
80 ms21980 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define pll pair<ll,ll> #define pii pair<int,int> #define fs first #define sc second #define tlll tuple<ll,ll,ll> const int mxn = 4e5+10; ll suf[mxn]; ll N,Q; int ans = 0; map<ll,int> mp; int rp[mxn]; ll dp[mxn][20]; ll arr[mxn]; void solve(){ int s,e; cin>>s>>e; e++; int ans = 0; for(int i = 19;i>=0;i--){ if(dp[s][i]<=e){ s = dp[s][i]; ans += 1<<i; } } cout<<ans<<'\n'; return; } int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>N; for(int i = 1;i<=N;i++)cin>>arr[i]; for(int i = N;i>=1;i--)suf[i] = suf[i+1]+arr[i]; int mn = mxn-1; for(int i = 0;i<20;i++)dp[mxn-1][i] = mxn-1; for(int i = N+1;i>=1;i--){ if(mp.find(suf[i]) != mp.end())mn = min(mn,mp[suf[i]]); mp[suf[i]] = i; dp[i][0] = mn; for(int j = 1;j<20;j++){ dp[i][j] = dp[dp[i][j-1]][j-1]; } } cin>>Q; while(Q--)solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...