Pagini recente » Cod sursa (job #2838306) | Cod sursa (job #2005773) | Cod sursa (job #1522207) | Cod sursa (job #1239884) | Cod sursa (job #3261441)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
const int NMAX = 250000 + 1;
const int LOGMAX = 18 + 1;
int n, nr_query;
int stramos[LOGMAX][NMAX];
int log[NMAX];
void precalc()
{
for(int i=2; i<=n; i++)
{
log[i] = log[i/2] + 1;
}
for(int i=1; i<=18; i++)
{
for(int j=1; j<=n; j++)
{
stramos[i][j] = stramos[i-1][ stramos[i-1][j] ];
}
}
}
int main()
{
in.tie(0); in.sync_with_stdio(0);
out.tie(0); out.sync_with_stdio(0);
in>>n>>nr_query;
for(int i=1; i<=n; i++)
{
in>>stramos[0][i];
}
for(int q=1; q<=nr_query; q++)
{
int a, b;
in>>a>>b;
int rez = a;
while(b)
{
int log2 = log[b];
rez = stramos[log2][rez];
b -= 1<<log2;
}
out<<rez<<"\n";
}
return 0;
}