Pagini recente » Istoria paginii runda/11dlabparcurgeri | Cod sursa (job #1357163)
#include<fstream>
#include<cmath>
#include<iostream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int a[20][250005];
int n,m;
int Log(int x)
{
x=log2(x);
return x;
}
void citire()
{
int i;
f>>n>>m;
for(i=1;i<=n;i++)
f>>a[0][i];
}
void aranjare()
{
int i,j;
for(i=1;i<=Log(n);i++)
for(j=1;j<=n;j++)
a[i][j]=a[i-1][a[i-1][j]];
}
int rez(int p,int q)
{
int red,ance=q;
while(p){
red=Log(p);
ance=a[red][ance];
p-=pow(2,red);
}
return ance;
}
int main()
{
int i,j,p,q,inter;
citire();
aranjare();
for(i=0;i<m;i++){
f>>q>>p;
inter=rez(p,q);
g<<inter<<"\n";
}
return 0;
}