Pagini recente » Cod sursa (job #1339384) | Cod sursa (job #1483177) | Cod sursa (job #694011) | Cod sursa (job #1326026) | Cod sursa (job #3184729)
#include <bits/stdc++.h>
using namespace std;
ifstream f ("stramosi.in");
ofstream g ("stramosi.out");
const int NMAX = 3e5;
const int LMAX = log2(NMAX);
int v[NMAX+1];
int str[NMAX+1][LMAX+1];
int query(int q, int p){
for(int j=LMAX; j>=0; j--)
if((1 << j) & p)
q = str[q][j];
return q;
}
int main()
{
int n, t;
f >> n >> t;
for(int i=1; i<=n; i++)
f >> v[i], str[i][0] = v[i];
for(int j=1; j<=log2(n); j++)
for(int i=1; i<=n; i++)
str[i][j] = str[str[i][j-1]][j-1];
for(int i=1; i<=t; i++){
int q, p;
f >> q >> p;
g << query(q, p) << "\n";
}
return 0;
}