Pagini recente » Cod sursa (job #962391) | Profil Aliiiiinaaa | Istoria paginii utilizator/diana-andriescu | Cod sursa (job #548979) | Cod sursa (job #781369)
Cod sursa(job #781369)
#include<iostream>
#include<fstream>
using namespace std;
const int LMAX = 18;
int a[LMAX+1][250001],lg[250001];
int stramos(int q, int p)
{
if((p&(p-1))==0)
return a[lg[p]][q];
return stramos(a[lg[p]][q],p-(1<<lg[p]));
}
int main ()
{
int p,q,i,n,m,j;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
f>>n>>m;
for(i=1;i<=n;i++)
f>>a[0][i];
lg[1]=0;
for(i=2;i<=n;i++)
lg[i]=lg[i/2]+1;
for(i=1;(1<<i)<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=a[i/2][a[i/2][j]];
for(i=1;i<=m;i++) {
f>>q>>p;
g<<stramos(q,p)<<'\n';
}
f.close();
g.close();
return 0;
}