Pagini recente » Cod sursa (job #1729518) | Cod sursa (job #61318) | Cod sursa (job #218850) | Cod sursa (job #2006653) | Cod sursa (job #2469079)
#include <fstream>
using namespace std;
int n,m,i,j,x,y,k,afis,s,v[500005][32],pw[32],lg[250005];
int main()
{
ifstream f("stramosi.in");
ofstream g("stramosi.out");
f>>n>>m;
pw[0]=1;
for(i=1;i<=30;i++)
pw[i]=pw[i-1]*2;
k=0;
for(i=1;i<=n;i++)
if(pw[k]==i)
{
lg[i]=k;
k++;
}
else
lg[i]=k-1;
for(i=1;i<=n;i++)
{
f>>x;
v[i][0]=x;
}
for(j=1;j<=lg[n];j++)
for(i=1;i<=n;i++)
v[i][j]=v[v[i][j-1]][j-1];
for(i=1;i<=m;i++)
{
f>>x>>y;
s=0;
while(s!=y)
{
k=lg[y-s];
s+=pw[k];
afis=v[x][k];
x=afis;
}
g<<afis<<'\n';
}
return 0;
}