Pagini recente » Cod sursa (job #1581818) | Cod sursa (job #200220) | Cod sursa (job #3256985) | Cod sursa (job #1520481) | Cod sursa (job #476048)
Cod sursa(job #476048)
#include <stdio.h>
FILE *fin = fopen ("stramosi.in", "r");
FILE *fout = fopen ("stramosi.out", "w");
int stramosi[19][250001];
int main()
{
int n, m;
fscanf(fin,"%d %d", &n, &m);
for (int i = 1; i <= n; i++)
fscanf( fin, "%d", &stramosi[0][i] );
for (int i = 1; i < 19; i++)
for (int j = 1; j <= n; j++)
stramosi[i][j] = stramosi[i - 1][ stramosi[i - 1][j] ];
for (; m > 0; m--)
{
int q, p, i, nr;
fscanf (fin, "%d %d", &q, &p);
while (p > 0)
{
i = 0; nr = 1;
if(p > nr )
{
while (nr <= p) { nr = nr<<1; i++; }
nr = nr>>1; i--;
}
p -= nr;
q = stramosi[i][q];
}
fprintf( fout, "%d\n", q);
}
fclose(fin);
fclose(fout);
return 0;
}