Cod sursa(job #1538694)

Utilizator gbibBacotiu Gabi gbib Data 29 noiembrie 2015 17:01:26
Problema Plantatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <bits/stdc++.h>

using namespace std;
//f[i][j] al 2^i lea stramos al lui j
//f[i][j]=f[i-1][f[i-1][j]]
int f[19][250005];
ifstream in("stramosi.in");
ofstream out("stramosi.out");

int query(int p,int q)
{
    for(int i=0;(1<<i)<=p;i++)
    {
        if((1<<i)&p)
        {
            q=f[i][q];
        }
    }
    return q;
}
int main()
{int n,m,i,j;
in>>n>>m;
for(i=1;i<=n;i++)
{
    in>>j;
    f[0][i]=j;
}
for(i=1;(1<<i)<=n;i++)
{
    for(j=1;j<=n;j++)
    {
        f[i][j]=f[i-1][f[i-1][j]];
    }
}
for(i=1;i<=m;i++)
{
    int y,x;
    in>>x>>y;
    out<<query(y,x)<<'\n';

}
    return 0;
}