Pagini recente » Istoria paginii runda/x-algo2009rundafinala | Statistici Lyla Bell (gasengineer143) | Monitorul de evaluare | Diferente pentru utilizator/funnystocky intre reviziile 80 si 79 | Cod sursa (job #1445872)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 250001
#define LOGN 18
int mat[LOGN+1][MAXN];
inline int log(int n){
int x=0;
while(n>0){
n/=2;
x++;
}
return x;
}
int main(){
FILE*fi,*fout;
int i,j,n,p,nr,q,x,m;
fi=fopen("stramosi.in" ,"r");
fout=fopen("stramosi.out" ,"w");
fscanf(fi,"%d%d" ,&n,&m);
for(i=1;i<=n;i++)
fscanf(fi,"%d" ,&mat[0][i]);
for(i=1;i<log(n);i++)
for(j=1;j<=n;j++)
mat[i][j]=mat[i-1][mat[i-1][j]];
for(i=0;i<m;i++){
fscanf(fi,"%d%d" ,&q,&p);
nr=log(p)-1;
x=q;
while(p>0){
if((1<<nr)<=p){
x=mat[nr][x];
p-=(1<<nr);
}
nr--;
}
fprintf(fout,"%d\n" ,x);
}
fclose(fi);
fclose(fout);
return 0;
}