Cod sursa(job #1848025)

Utilizator dan89Stan Alexandru dan89 Data 15 ianuarie 2017 13:06:33
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");


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() {

    int N, M;
    in>>N>>M;

    for (int i=1; i<= N; ++i) {
        in>>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) {
        in>>s>>p;

        out<<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;
}