Pagini recente » Cod sursa (job #1966208) | Cod sursa (job #1914083) | Cod sursa (job #620270) | Cod sursa (job #2731469) | Cod sursa (job #371939)
Cod sursa(job #371939)
#include <iostream>
#include <fstream>
using namespace std;
int main() {
FILE *f1=fopen("stramosi.in", "r"), *f2=fopen("stramosi.out", "w");
int stra[19][250010], n, m, k, p, i, j, poz;
fscanf(f1, "%d%d", &n, &m);
for(i=1; i<=n; i++) {
fscanf(f1, "%d", &stra[0][i]);
}
for(i=1; i<=n; i++) {
for(j=1; j<=18; j++) {
stra[j][i]=stra[j-1][stra[j-1][i]];
}
}
for(i=1; i<=m; i++) {
fscanf(f1, "%d%d", &p, &k);
/**
j=0; n=p;
while(k) {
if(k%2==1) {
n=stra[j][n];
}
j++; k=k>>1;
}
fprintf(f2, "%d\n", n);
**/
poz =18;
while (k) {
if (k & (1<<poz)) {
p = stra[poz][p];
k -= (1<<poz);
}
poz--;
}
fprintf(f2, "%d\n", p);
}
fclose(f1); fclose(f2);
return 0;
}