Pagini recente » Cod sursa (job #2454658) | Cod sursa (job #1897236) | Cod sursa (job #1080369) | Cod sursa (job #2400600) | Cod sursa (job #1588342)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int n,q,dad[20][250005],lg[250005];
int Solve(int x,int k)
{ int i;
while(k)
{ x=dad[lg[k]][x];
k-=(1<<(lg[k]));
}
return x;
}
void Build()
{ int i,p;
for(p=1;p<=lg[n];p++)
for(i=1;i<=n;i++)
dad[p][i]=dad[p-1][dad[p-1][i]];
}
int main()
{ int i,x,y;
f>>n>>q;
for(i=1;i<=n;i++)
{ f>>x;
dad[0][i]=x;
}
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
Build();
for(i=1;i<=q;i++)
{ f>>x>>y;
g<<Solve(x,y)<<"\n";
}
return 0;
}