Pagini recente » Rating Ganea Dragus Talau (UPB_Ta_Dr_Ga) | Cod sursa (job #693152) | Cod sursa (job #1660113) | Cod sursa (job #96138) | Cod sursa (job #1498016)
#include <fstream>
using namespace std;
ofstream fout("stramosi.out");
ifstream fin("stramosi.in");
const int NMAX = 250005;
int n, m, x, y;
int ST[19][NMAX];
int afla(int q, int p)
{
for(int i = 20; i > -1; --i)
if(p & (1 << i))
q = ST[i][q];
return q;
}
int main()
{
fin >> n >> m;
for(int i=1; i<=n; ++i)
fin >> ST[0][i];
int l = 0, p = 1;
while (p <= n) {
p *= 2;
++l;
}
--l;
for(int j=1; j<=l; ++j)
for(int i=1; i<=n; ++i)
ST[j][i] = ST[j-1][ST[j-1][i]];
for(int i=1; i<=m; ++i) {
fin >> x >> y;
fout << afla(x, y) << '\n';
}
return 0;
}