Cod sursa(job #2028501)

Utilizator MihaelaCismaruMihaela Cismaru MihaelaCismaru Data 27 septembrie 2017 22:53:29
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
using namespace std;
ifstream in ("stramosi.in" );
ofstream out("stramosi.out");
int a,b,n,m,aux[250001],p[23],dp[23][250001];
int main(){
    in >> n >> m;
    for( int i = 1; i <= n; i ++ ){
        in>>dp[0][i];
    }
    for( int j = 1; j <= 21; j ++ ){
        for( int i = 1; i <= n; i ++ ){
            dp[i][j] = dp[i-1][ dp[i-1][j] ];
        }
    }
    p[0] = 1;
    for( int i = 1; i <= 21; i ++ ){
        p[i] = p[i-1]*2;
    }
    for( int i = 2; i <= n; i ++ ){
        aux[i] = aux[i/2]+1;
    }
    for( int k = 1; k <= m; k ++ ){
        in >> a >> b;
        while( true ){
            if( b == 0 ){
                break;
            }
            a = dp[aux[b]][a];
            b = b - p[aux[b]];
        }
        out<<a<<"\n";
    }
    return 0;
}