Pagini recente » Cod sursa (job #1206914) | Cod sursa (job #701540) | Istoria paginii runda/preoji2012/clasament | Cod sursa (job #2014225) | Cod sursa (job #2278876)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int main()
{
int n, T;
in >> n >> T;
vector<int> log(n + 1);
for (int i = 2; i <= n; i++)
log[i] = log[i / 2] + 1;
vector<vector<int> > dp(log[n] + 1, vector<int>(n + 1));
for (int i = 1; i <= n; i++)
{
int x;
in >> x;
dp[0][i] = x;
}
for (int i = 1; i <= log[n]; i++)
for (int j = 1; j <= n; j++)
dp[i][j] = dp[i - 1][dp[i - 1][j]];
while (T--)
{
int nod, cnt;
in >> nod >> cnt;
for (int i = log[cnt]; i >= 0; i--)
if ((1<<i) & cnt)
nod = dp[i][nod];
out << nod << '\n';
}
return 0;
}