Pagini recente » Cod sursa (job #900524) | Cod sursa (job #1111509) | Cod sursa (job #2441670) | Cod sursa (job #539599) | Cod sursa (job #1956813)
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
#define nmax 250005
int t[35][nmax], n, m, log_2[nmax];
void citire()
{
int k;
fin>>n>>m;
for(k=1; k<=n; k++)
fin>>t[0][k];
}
void preprocesare()
{
int i, j;
for(i=2; i<nmax; i++)
log_2[i]=1+log_2[i>>1];
for(j=1; j<=log_2[n]; j++)
for(i=1; i<=n; i++)
t[j][i]=t[j-1][t[j-1][i]];
}
void query(int p, int q)
{
int k;
k=log_2[p];
while(p!=0)
{
q=t[k][q];
p=p-(1<<k);
k=log_2[p];
}
fout<<q<<'\n';
}
int main()
{
int p, q;
citire();
preprocesare();
while(m)
{
m--;
fin>>q>>p;
query(p, q);
}
return 0;
}