const int MAX_N = 1e5 + 5 ;
const int BLOCK_SIZE = 350 ;
int last[ MAX_N] ;
int cnt[ MAX_N] ;
int a[ MAX_N] ;
int n, m;
void update( int i) {
int nextPos = i + a[ i] ;
if ( nextPos > n)
last[ i] = i,
cnt[ i] = 0 ;
else if ( i / BLOCK_SIZE == nextPos / BLOCK_SIZE)
last[ i] = last[ nextPos] ,
cnt[ i] = cnt[ nextPos] + 1 ;
else
last[ i] = nextPos,
cnt[ i] = 1 ;
}
int main( ) {
ios_base:: sync_with_stdio ( 0 ) ;
cin .tie ( 0 ) ; cout .tie ( 0 ) ;
cin >> n >> m;
for ( int i = 1 ; i <= n; i++ )
cin >> a[ i] ;
for ( int i = n; i >= 1 ; i-- )
update( i) ;
while ( m-- ) {
int query;
cin >> query;
if ( query == 1 ) {
int x;
cin >> x;
int cntJump = 0 ;
while ( last[ x] ! = x) {
// lastPos = last[x];
cntJump + = cnt[ x] ;
x = last[ x] ;
}
while ( x + a[ x] <= n) {
cntJump++ ;
// lastPos = x + a[x];
x = x + a[ x] ;
}
cout << x << " " << cntJump + 1 << '\n ' ;
}
else {
int x, y;
cin >> x >> y;
a[ x] = y;
// update(x);
for ( int i = x; i >= 1 && i / BLOCK_SIZE == x / BLOCK_SIZE; i-- )
update( i) ;
}
}
return 0 ;
}
Y29uc3QgaW50IE1BWF9OID0gMWU1ICsgNTsKY29uc3QgaW50IEJMT0NLX1NJWkUgPSAzNTA7CiAKaW50IGxhc3RbTUFYX05dOwppbnQgY250W01BWF9OXTsKaW50IGFbTUFYX05dOwppbnQgbiwgbTsKIAp2b2lkIHVwZGF0ZShpbnQgaSl7CiAgaW50IG5leHRQb3MgPSBpICsgYVtpXTsKICBpZihuZXh0UG9zID4gbikKICAgIGxhc3RbaV0gPSBpLCAKICAgIGNudFtpXSA9IDA7CiAgZWxzZSBpZihpIC8gQkxPQ0tfU0laRSA9PSBuZXh0UG9zIC8gQkxPQ0tfU0laRSkKICAgIGxhc3RbaV0gPSBsYXN0W25leHRQb3NdLAogICAgY250W2ldID0gY250W25leHRQb3NdICsgMTsKICBlbHNlCiAgICBsYXN0W2ldID0gbmV4dFBvcywKICAgIGNudFtpXSA9IDE7Cn0KIAppbnQgbWFpbigpewogIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAKICBjaW4gPj4gbiA+PiBtOwogCiAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICBjaW4gPj4gYVtpXTsKIAogIGZvcihpbnQgaSA9IG47IGkgPj0gMTsgaS0tKQogICAgdXBkYXRlKGkpOwogCiAgd2hpbGUobS0tKXsKICAgIGludCBxdWVyeTsKICAgIGNpbiA+PiBxdWVyeTsKICAgIAogICAgaWYocXVlcnkgPT0gMSl7CiAgICAgIGludCB4OwogICAgICBjaW4gPj4geDsKIAogICAgICBpbnQgY250SnVtcCA9IDA7CiAKICAgICAgd2hpbGUobGFzdFt4XSAhPSB4KXsKICAgICAgICAvLyBsYXN0UG9zID0gbGFzdFt4XTsKICAgICAgICBjbnRKdW1wICs9IGNudFt4XTsKICAgICAgICB4ID0gbGFzdFt4XTsKICAgICAgfQogCiAgICAgIHdoaWxlKHggKyBhW3hdIDw9IG4pewogICAgICAgIGNudEp1bXArKzsKICAgICAgICAvLyBsYXN0UG9zID0geCArIGFbeF07CiAgICAgICAgeCA9IHggKyBhW3hdOwogICAgICB9IAogICAgICBjb3V0IDw8IHggPDwgIiAiIDw8IGNudEp1bXAgKyAxIDw8ICdcbic7CiAgICB9CiAKICAgIGVsc2V7CiAgICAgIGludCB4LCB5OwogICAgICBjaW4gPj4geCA+PiB5OwogICAgICBhW3hdID0geTsKICAgICAgLy8gdXBkYXRlKHgpOwogICAgICBmb3IoaW50IGkgPSB4OyBpID49IDEgJiYgaSAvIEJMT0NLX1NJWkUgPT0geCAvIEJMT0NLX1NJWkU7IGktLSkKICAgICAgICB1cGRhdGUoaSk7CiAgICB9CiAgfQogCiAgcmV0dXJuIDA7Cn0=
compilation info
prog.cpp: In function ‘int main()’:
prog.cpp:23:3: error: ‘ios_base’ has not been declared
ios_base::sync_with_stdio(0);
^~~~~~~~
prog.cpp:24:3: error: ‘cin’ was not declared in this scope
cin.tie(0); cout.tie(0);
^~~
prog.cpp:24:3: note: suggested alternative: ‘main’
cin.tie(0); cout.tie(0);
^~~
main
prog.cpp:24:15: error: ‘cout’ was not declared in this scope
cin.tie(0); cout.tie(0);
^~~~
prog.cpp:24:15: note: suggested alternative: ‘cnt’
cin.tie(0); cout.tie(0);
^~~~
cnt
stdout