Cod sursa(job #931925)

Utilizator VisuianMihaiMihai Visuian VisuianMihai Data 28 martie 2013 16:38:37
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,m,x,y,lg[250001],query[17][250001];
int main()
{
    fin>>n>>m;
    for(int i = 1; i<= n; i++ )
    {
        fin>>query[0][i];
        if(i>1) lg[i]=1+lg[i>>1];
    }
    for(int j = 1; (1<<j) <= n; j++ )
        for(int i = 1; i<= n; i++ )
            query[j][i] = query[j-1][query[j-1][i]];
    while(m--)
    {
        fin>>x>>y;
        while(y)
            x = query[lg[y]][x], y -= (1<<lg[y]);
        fout<<x<<'\n';
    }
    fin.close();
    fout.close();
    return 0;
}