#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = int(4e5)+100;
int n;
ll a[N];
int nxt[N];
int jmp[N];
array<int,3> qer[N];
int main ()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
a[0] = 0;
for ( int i=1; i<=n; i++ )
cin >> a[i];
for ( int i=1; i<=n; i++ )
a[i] += a[i-1];
for ( int i=0; i<=n+1; i++ )
nxt[i] = n+1;
multiset<int> mst;
mst.insert( 0 );
for ( int l=0, r=0; l<=n; l++ )
{
/*cout << l << ": ";
for ( auto& el : mst )
cout << el << ' ';
cout << '\n';*/
while ( r <= n )
{
if ( mst.count( a[r] ) >= 2 )
break;
r++;
if ( r <= n )
mst.insert( a[r] );
}
/*cout << l << ' ' << r << ": ";
for ( auto& el : mst )
cout << el << ' ';
cout << '\n';*/
nxt[l+1] = r;
mst.erase( mst.find( a[l] ) );
}
//cout << "here\n";
/*map<ll,int> pre;
for ( int i=0; i<=n; i++ )
{
if ( pre.count( a[i] ) )
nxt[ pre[a[i]]+1 ] = i;
pre[ a[i] ] = i;
}*/
/*for ( int i=0; i<=n; i++ )
cout << nxt[i] << ' ';
cout << '\n';*/
for ( int i=n; i>=0; i-- )
nxt[i] = min( nxt[i], nxt[i+1] );
int q;
cin >> q;
for ( int i=0; i<q; i++ )
{
cin >> qer[i][0] >> qer[i][1];
qer[i][2] = 0;
}
for ( int p=20; p>=0; p-- )
{
for ( int i=0; i<=n+1; i++ )
jmp[i] = nxt[i];
for ( int i=0; i<p; i++ )
{
for ( int j=0; j<=n+1; j++ )
jmp[j] = jmp[ min( n+1, jmp[j]+1 ) ];
}
/*cout << p << ": ";
for ( int i=0; i<=n+1; i++ )
cout << jmp[i] << ' ';
cout << '\n';*/
for ( int i=0; i<q; i++ )
{
if ( qer[i][0] <= qer[i][1] && jmp[ qer[i][0] ] <= qer[i][1] )
{
qer[i][2] += 1 << p;
qer[i][0] = jmp[ qer[i][0] ] + 1;
}
}
}
for ( int i=0; i<q; i++ )
cout << qer[i][2] << '\n';
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
468 KB |
Output is correct |
2 |
Correct |
4 ms |
468 KB |
Output is correct |
3 |
Correct |
6 ms |
468 KB |
Output is correct |
4 |
Correct |
5 ms |
468 KB |
Output is correct |
5 |
Correct |
4 ms |
468 KB |
Output is correct |
6 |
Correct |
4 ms |
468 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
468 KB |
Output is correct |
2 |
Correct |
4 ms |
468 KB |
Output is correct |
3 |
Correct |
6 ms |
468 KB |
Output is correct |
4 |
Correct |
5 ms |
468 KB |
Output is correct |
5 |
Correct |
4 ms |
468 KB |
Output is correct |
6 |
Correct |
4 ms |
468 KB |
Output is correct |
7 |
Correct |
83 ms |
3452 KB |
Output is correct |
8 |
Correct |
77 ms |
3588 KB |
Output is correct |
9 |
Correct |
76 ms |
3584 KB |
Output is correct |
10 |
Correct |
78 ms |
3596 KB |
Output is correct |
11 |
Correct |
72 ms |
3592 KB |
Output is correct |
12 |
Correct |
78 ms |
3584 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
468 KB |
Output is correct |
2 |
Correct |
4 ms |
468 KB |
Output is correct |
3 |
Correct |
6 ms |
468 KB |
Output is correct |
4 |
Correct |
5 ms |
468 KB |
Output is correct |
5 |
Correct |
4 ms |
468 KB |
Output is correct |
6 |
Correct |
4 ms |
468 KB |
Output is correct |
7 |
Correct |
83 ms |
3452 KB |
Output is correct |
8 |
Correct |
77 ms |
3588 KB |
Output is correct |
9 |
Correct |
76 ms |
3584 KB |
Output is correct |
10 |
Correct |
78 ms |
3596 KB |
Output is correct |
11 |
Correct |
72 ms |
3592 KB |
Output is correct |
12 |
Correct |
78 ms |
3584 KB |
Output is correct |
13 |
Correct |
317 ms |
13324 KB |
Output is correct |
14 |
Correct |
308 ms |
13664 KB |
Output is correct |
15 |
Correct |
328 ms |
13816 KB |
Output is correct |
16 |
Correct |
328 ms |
13496 KB |
Output is correct |
17 |
Correct |
305 ms |
20364 KB |
Output is correct |
18 |
Correct |
345 ms |
20396 KB |
Output is correct |