Cod sursa(job #1848020)

Utilizator dan89Stan Alexandru dan89 Data 15 ianuarie 2017 12:57:13
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#define in "stramosi.in"
#define out "stramosi.out"
using namespace std;

int a[20][250001];

int stramos(int x, int p) {
    int aux = x;

    for (int i=0; (1<<i) <= p; i++) {
        if((1<<i)&p) {
            aux = a[i][aux];
        }
    }
    return aux;
}


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

    int N, M;
    cin>>N>>M;

    for (int i=1; i<= N; i++) {
        cin>>a[0][i];
    }

    for (int k=1; k<=18; k++) {
        for (int i=1; i<=N; i++) {
            a[k][i] = a[k-1][a[k-1][i]];
        }
    }

    int s, p;

    for (int k=1; k<=M; k++) {
        cin>>s>>p;

        cout<<stramos(s,p)<<endl;
    }

//    for (int i=0; i<=N; i++) {
//        for (int j=1; j<=N; j++) {
//            cout<<a[i][j]<<" ";
//        }
//        cout<<endl;
//    }
    return 0;
}