Pagini recente » Istoria paginii runda/cex_5/clasament | Profil Machiaveli999 | Cod sursa (job #1297092) | Istoria paginii runda/simulusu2/clasament | Cod sursa (job #1707564)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int Nmax = 250005;
int n, m;
int s[Nmax][22];
int main()
{
int x, y, z, t;
fin >> n >> m;
for ( int i = 1; i <= n; i++ )
{
fin >> s[i][0];
}
for ( int j = 1; j <= 18; j++ )
for ( int i = 1; i <= n; i++ )
s[i][j] = s[s[i][j-1]][j-1];
for ( int i = 1; i <= m; i++ )
{
fin >> x >> y;
while(y > 0)
{
z = 1;
for ( t = 0; z * 2 <= y; ++t)
z = z * 2;
x = s[x][t];
y = y - z;
}
fout << x << '\n';
}
fin.close();
fout.close();
return 0;
}