Cod sursa(job #1574249)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 20 ianuarie 2016 13:45:21
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream>
using namespace std;
int n, m, i, j, x, y, p, q;
int a[19][250005], pt[250005];
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int main(){
    fin>> n >> m;
    for(i = 1; i <= n; i++){
        fin>> a[0][i];
    }
    for(i = 1; (1 << i) <= n; i++){
        for(j = 1; j <= n; j++){
            if(a[i - 1][j] != 0){
                a[i][j] = a[i - 1][ a[i - 1][j] ];
            }
        }
    }
    for(i = 2; i <= n; i++){
        pt[i] = pt[i / 2] + 1;
    }
    for(i = 1; i <= m; i++){
        fin>> q >> p;
        while(p != 0){
            q = a[ pt[p] ][q];
            p -= (1 << pt[p]);
        }
        fout<< q <<"\n";
    }
    return 0;
}