Pagini recente » Cod sursa (job #2939072) | Cod sursa (job #650256) | Cod sursa (job #748288) | Cod sursa (job #2638179) | Cod sursa (job #178301)
Cod sursa(job #178301)
#include<stdio.h>
#include<iostream.h>
#define NMAX 300000
long n,m,i,j,p[21][NMAX];
long x, y, contor, raspuns;
long putere_2(long a)
{
long b = 1; contor=0;
while( b < a) { b = (1<<b); contor++; }
if(b==a) return a;
else
{contor--;
return b/2; }
}
main()
{
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%ld %ld", &n, &m);
for(j=1; j<=n; j++) scanf("%ld", &p[0][j]);
for(i=1; i<=19; i++)
for(j=1; j<=n; j++)
p[i][j] = p[i-1][ p[i-1][j] ];
for(i=1; i<=m; i++)
{
scanf("%ld %ld", &x, &y); raspuns=x;
while(y)
{y-=putere_2(y);
raspuns = p[contor][raspuns]; }
printf("%ld\n" , raspuns );
}
printf("\n"); return 0; }