Cod sursa(job #1104479)

Utilizator classiusCobuz Andrei classius Data 10 februarie 2014 20:14:35
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
using namespace std;

#include<iomanip>
#include<cmath>
#include<algorithm>
#include<vector>
#include<set>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<utility>
#include<cstdio>
#include<cstdlib>
#include<cassert>
#include<numeric>
#include<cstring>
#include<sstream>
#include<algorithm>
#include<deque>

const int INFI=(1LL<<30)-100;
const long long INFL=(1LL<<62)-100;
const double eps=1e-10;
const long double pi=acos(-1.0);
const int MAXN=250100;

int a[MAXN][20];

int main(){
    freopen("date.in","r",stdin);
    freopen("date.out","w",stdout);

    int n,m;
    scanf("%d%d",&n,&m);

    for(int i=1;i<=n;i++){
        scanf("%d",&a[i][0]);
    }

    for(int j=1;j<20;j++){
        for(int i=1;i<=n;i++){
            a[i][j]=a[a[i][j-1]][j-1];
        }
    }

    for(int i=1;i<=m;i++){
        int x,ds;
        scanf("%d%d",&x,&ds);
        for(int j=0;j<20 && x;j++){
            if((1<<j) & ds){
                x=a[x][j];
            }
        }
        printf("%d\n",x);
    }

    return 0;
}