Pagini recente » Cod sursa (job #1891043) | Cod sursa (job #357050) | Cod sursa (job #410214) | Cod sursa (job #2480166) | Cod sursa (job #2472753)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int main()
{
int n, m, q, p, i, j;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
f >> n >> m;
int l = round(log2(n));
int a[l+1][n+1];
for (j = 0; j <= n; j++)
{
for(i = 0; i <= l; i++)
a[i][j] = 0;
}
for (j = 1; j <= n; j++)
{
f >> a[1][j];
i = 2;
while (i <= l)
{
a[i][j] = a[i-1][a[i-1][j]];
i++;
}
}
while (m > 0)
{
f >> q >> p;
while (p > 1)
{
int exp = round(log2(p));
q = a[exp][q];
p = p >> exp;
}
if (p == 0)
g << a[1][q] << endl;
else
g << a[p][q] << endl;
m--;
}
}