Pagini recente » Cod sursa (job #2005222) | Cod sursa (job #9673) | Cod sursa (job #195271) | Cod sursa (job #2825435) | Cod sursa (job #1889249)
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m, i, q, p, k, jmp;
int T[25][250010], logDyn[250010];
int main()
{
fin>>n>>m;
for(i = 1 ; i <= n ; i++)
fin>>T[0][i];
for(k = 1 ; (1 << k) <= n ; k++)
for (i = 1 ; i <= n ; i++)
T[k][i] = T[k - 1][T[k - 1][i]];
for(i = 2 ; i <= n ; i++)
logDyn[i] = logDyn[i / 2] + 1;
for(i = 1 ; i <= m ; i++) {
fin>>q>>p;
do {
jmp = logDyn[p];
p -= (1 << jmp);
q = T[jmp][q];
} while (q != 0 && p > 0);
fout<<q<<'\n';
}
return 0;
}