Pagini recente » Profil yaxley | Cod sursa (job #2217740) | Istoria paginii runda/lh.11-1 | Cod sursa (job #2014872) | Cod sursa (job #502458)
Cod sursa(job #502458)
#include <fstream>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int N,M;
int Tt[20][250002];//T[k][i] = al 2^k tata al lui i
int Stramos(int a,int k)
{
if(k==0)
return a;
else
{
int p = 18;
while((1<<p)>k)p--;
k-=(1<<p);
Stramos(Tt[p][a],k);
}
}
int main()
{
int i,k;
in>>N>>M;
for(i=1;i<=N;i++)in>>Tt[0][i];
for(k=1;k<=18;k++)
{
for(i=1;i<=N;i++)
{
Tt[k][i] = Tt[k-1][Tt[k-1][i]];
}
}
while(M--)
{
in>>k>>i;
out<<Stramos(k,i)<<'\n';
}
return 0;
}