// UUID: 6f85f705-496a-4070-b4de-92a6dbecff01
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int c=4e5+10,k=19;
int kov[c][k];
int main() {
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int n; cin>>n;
vector<ll> pref(n+1);
for(int i=1; i<=n; i++)
{
int x; cin>>x;
pref[i]=pref[i-1]+x;
}
map<ll, int> ind;
for(int i=n; i>=0; i--)
{
kov[i][0]=kov[i+1][0];
if(ind.count(pref[i]))
{
kov[i][0]=min(kov[i][0],ind[pref[i]]);
}
ind[pref[i]]=i;
}
for(int j=0; j<k; j++)
kov[n+1][j]=n+1;
for(int j=1; j<k; j++)
for(int i=0; i<=n; i++)
kov[i][j]=kov[kov[i][j-1]][j-1];
int q; cin>>q;
while(q--)
{
int l,r; cin>>l>>r;
int ans=0;
l--;
for(int i=k-1; i>=0; i--)
{
if(kov[l][i]<=r)
{
ans+=(1<<i);
l=kov[l][i];
}
}
cout<<ans<<"\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |