Cod sursa(job #1344365)

Utilizator nicnic28nichita trita nicnic28 Data 16 februarie 2015 17:52:36
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
using namespace std;

fstream in("stramosi.in",ios::in),out("stramosi.out",ios::out);

const int N=1+25e4;

int t[18][N],n,m,lg[1<<18],z;

void log(){
    int i,j=1;
    lg[0]=0;
    lg[1]=1;
    lg[2]=1;
    lg[3]=1;
    for(i=4 ; i<=n ; i<<=1){
        lg[i]=lg[i-1]+1;
        for(j=i+1 ; j<=i<<1 ; j++){
            lg[j]=lg[j-1];
        }
    }
}

int main()
{
    in>>n>>z;
    log();
    for(int i=1 ; i<=n ; i++){
        in>>t[0][i];
    }
    int g=N,p=0,l=lg[n]+1;
    for(int i=1 ; i<18 ; i++){
        for(int j=1 ; j<=n ; j++){
            t[i][j]=t[i-1][t[i-1][j]];
        }
    }
    int x,y;
    for(int i=1 ; i<=z ; i++){
        in>>x>>y;
        p=0;
        while(y){
            if(y%2!=0)
                x=t[p][x];
            p++;
            y>>=1;
        }
        out<<x<<"\n";
    }
    return 0;
}