Pagini recente » Cod sursa (job #3261877) | Cod sursa (job #276806) | Cod sursa (job #795996) | Cod sursa (job #110471) | Cod sursa (job #1770389)
#include <stdio.h>
#define MAX 300000
int mat[MAX+1][20];
int main(){
FILE *fin=fopen("stramosi.in","r"),*fout=fopen("stramosi.out","w");
int n, m;
fscanf(fin,"%d%d",&n, &m);
int i, j;
for(i = 1;i <= n;i++)
fscanf(fin,"%d", &mat[i][0]);
for(i=1;i<=n;i++)
for(j = 1; (1<<j) <= n;j++)
mat[i][j] = mat[mat[i][j-1]][j-1];
for(i = 0;i < m;i++){
int q, p;
fscanf(fin,"%d%d", &q, &p);
for(j = 0;(1<<j) <= p && q>0;j++)
if(((1<<j)&p) != 0)
q = mat[q][j];
fprintf(fout,"%d\n",q);
}
fclose(fin);
fclose(fout);
return 0;
}