Cod sursa(job #2521633)
| Utilizator | Data | 11 ianuarie 2020 11:45:53 | |
|---|---|---|---|
| Problema | Stramosi | Scor | 80 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <stdio.h>
#define MAX 250000
int t[MAX+1][18];
int main(){
FILE *fin=fopen("stramosi.in","r");
FILE *fout=fopen("stramosi.out","w");
int n,m,i,j,p,q,s,p2;
fscanf(fin,"%d%d",&n,&m);
for(i=1; i<=n; i++)
fscanf(fin,"%d",&t[i][0]);
for(j=1; j<18; j++)
for(i=1; i<=n; i++)
t[i][j]=t[t[i][j-1]][j-1];
for(i=0; i<m; i++){
fscanf(fin,"%d%d",&q,&p);
s=q;
p2=0;
while(p){
if(p%2)
s=t[s][p2];
p/=2;
p2++;
}
fprintf(fout,"%d\n",s);
}
fclose(fin);
fclose(fout);
return 0;
}
