Pagini recente » Cod sursa (job #643010) | Cod sursa (job #2542881) | Cod sursa (job #433371) | Cod sursa (job #1810578) | Cod sursa (job #1100773)
#include <cstdio>
#include <cmath>
#include <fstream>
using namespace std;
#define NMAX 250003
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int n, m, p, q, logaritm;
int best[18][NMAX];
int main ()
{
//freopen ("stramosi.in", "r", stdin);
//freopen ("stramosi.out", "w", stdout);
//scanf ("%d %d", &n, &m);
fin >> n >> m;
for (int i = 1, x; i <= n; ++i)
{
//scanf ("%d", &x);
fin >> x;
best[0][i] = x;
}
logaritm = log2 (n);
for (int i = 1; i <= logaritm; ++i)
{
for (int j = 1; j <= n; ++j)
best[i][j] = best[i - 1][best[i-1][j]];
}
for (int i = 1; i <= m; ++i)
{
fin >> q >> p;
//scanf ("%d %d", &q, &p);
p <<= 1;
for (int j = 0; j <= logaritm; ++j)
{
if (q == 0) break;
p >>= 1;
if (p & 1) q = best[j][q];
}
//printf ("%d\n", q);
fout << q << "\n";
}
return 0;
}