Pagini recente » Cod sursa (job #629816) | Cod sursa (job #974984) | Cod sursa (job #1177083) | Cod sursa (job #781310) | Cod sursa (job #712205)
Cod sursa(job #712205)
#include <fstream>
#include <vector>
#define MAXN 250010
using namespace std;
int Log[MAXN],n,m,a[20][MAXN],i,j;
int query(int q,int p)
{
if(p==0) return q;
if(q==0) return 0;
q=a[Log[p]][q];
p-=(1<<(Log[p]));
return query(q,p);
}
int main()
{
int p,q;
ifstream fi("stramosi.in");
ofstream fo("stramosi.out");
fi>>n>>m;
for(i=1;i<=n;i++) fi>>a[0][i];
for(i=1;(1<<i)<n;i++)
for(j=1;j<=n;j++)
a[i][j]=a[i-1][a[i-1][j]];
for(i=2;i<=n;i++) Log[i]=Log[i/2]+1;
for(i=1;i<=m;i++)
{
fi>>q>>p;
if(p>n) fo<<"0\n"; else
fo<<query(q,p)<<"\n";
}
return 0;
}