Pagini recente » Monitorul de evaluare | Cod sursa (job #817879) | Diferente pentru problema/inversmodular intre reviziile 54 si 53 | Borderou de evaluare (job #3311777) | Cod sursa (job #3344375)
#include <bits/stdc++.h>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int tata[300009], str[22][300009], p[22];
int query (int x, int y)
{
int ans=x, bit=0;
while (y)
{
if (y%2)
ans=str[bit][ans];
bit++;
y/=2;
}
return ans;
}
signed main ()
{
p[0]=1;
for (int i=1; i<=20; i++)
p[i]=2*p[i-1];
int n, q;
f >> n >> q;
for (int i=1; i<=n; i++)
f >> str[0][i];
for (int i=1; p[i]<=n; i++)
for (int j=1; j<=n; j++)
str[i][j]=str[i-1][str[i-1][j]];
while (q--)
{
int x, y;
f >> x >> y;
g << query (x, y) << '\n';
}
}