Pagini recente » Cod sursa (job #491085) | Cod sursa (job #1922348) | Cod sursa (job #2789078) | Cod sursa (job #2210095) | Cod sursa (job #2243428)
#include <iostream>
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int a[18][250001];
int N, M, P, Q;
int main()
{
f >> N >> M;
//cout<<log2(250000);
for(int i = 1; i <= N; i++)
f >> a[0][i];
int maxm = (int)log2(N);
for(int i = 1; i <= maxm ; i++)
for(int j = 1; j <= N; j++)
a[i][j] = a[i - 1][a[i - 1][j]];
while(M--)
{
f >> Q >> P; //AL P-lea stramos al elem de pe poz Q
int poz = maxm;
while(P)
{
if(P & (1 << poz))
{
Q = a[poz][Q];
P -= 1 << poz;
}
poz--;
}
g << Q << '\n';
}
return 0;
}