Pagini recente » Cod sursa (job #2695288) | Cod sursa (job #1751049) | Cod sursa (job #1498198) | Cod sursa (job #16119) | Cod sursa (job #1781928)
#include <cstdio>
const int MAX_N = 250000;
const int MAX_LOG = 18;
int d[1+MAX_LOG][1+MAX_N];
int log[1+MAX_N];
int main() {
int n, m, a, b, bit;
FILE *fin = fopen("stramosi.in", "r");
fscanf(fin, "%d%d", &n, &m);
for(int i = 1; i <= n; ++i) {
fscanf(fin, "%d", &d[0][i]);
}
for(int i = 1; i <= MAX_LOG; ++i)
for(int j = 1; j <= n; ++j)
d[i][j] = d[i - 1][d[i - 1][j]];
FILE *fout = fopen("stramosi.out", "w");
for(int i = 0; i < m; ++i) {
fscanf(fin, "%d%d", &a, &b);
bit = 0;
while(b > 0) {
if(b % 2 == 1)
a = d[bit][a];
b = b / 2;
bit++;
}
fprintf(fout, "%d\n", a);
}
fclose(fin);
fclose(fout);
return 0;
}