Pagini recente » Istoria paginii monthly-2012/runda-11/clasament | Cod sursa (job #270979) | Cod sursa (job #1099097) | Cod sursa (job #2133079) | Cod sursa (job #1497984)
#include <fstream>
using namespace std;
ofstream fout("stramosi.out");
ifstream fin("stramosi.in");
const int NMAX = 250050;
int n, m;
int ST[20][NMAX];
int log2(int val)
{
int sol = 0;
while(val / 2) {
val /= 2;
sol++;
}
return sol;
}
int main()
{
fin >> n >> m;
for(int i=1; i<=n; i++)
fin >> ST[0][i];
int log = log2(n);
for(int j=1; j<=log; j++)
for(int i=1; i<=n; i++)
ST[j][i] = ST[j-1][ST[j-1][i]];
for(int i=1, x, y; i<=m; i++) {
fin >> x >> y;
for(int j=20; j>=0; j--)
if(y & (1 << j))
x = ST[j][x];
fout << x << '\n';
}
return 0;
}