Cod sursa(job #2073011)

Utilizator tqmiSzasz Tamas tqmi Data 22 noiembrie 2017 17:02:28
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#define Nmax 250000
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int TT[Nmax + 5][20],N,M,Log[Nmax + 5];
void precalc()
{
    for(int i=2;i<=Nmax;i++)
        Log[i]=Log[i/2]+1;
    for(int j=1;j<=Log[N];j++)
        for(int i=1;i<=N;i++)
            TT[i][j]=TT[TT[i][j-1]][j-1];
}
int check(int nod,int p)
{
    while(p>0)
    {
        nod=TT[nod][Log[p]];
        p-=(1<<Log[p]);
    }
    return nod;
}
void read()
{
    fin>>N>>M;
    for(int i=1;i<=N;i++)
        fin>>TT[i][0];
    precalc();
    for(int i=1;i<=M;i++)
    {
        int x,y;
        fin>>x>>y;
        fout<<check(x,y)<<"\n";
    }
}
int main()
{
    read();
    return 0;
}