Pagini recente » Cod sursa (job #1532953) | Cod sursa (job #3338515) | Cod sursa (job #3329030) | Cod sursa (job #1019238) | Cod sursa (job #3307018)
#include <bits/stdc++.h>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int str[25][300009];
int logaritm (int x)
{
int cnt=0;
while (x!=1)
{
cnt++;
x/=2;
}
return cnt;
}
int query (int poz, int nivel)
{
int bit=(nivel&-nivel);
nivel-=bit;
bit=logaritm(bit);
if (nivel) return query (str[bit][poz], nivel);
else return str[bit][poz];
}
int main ()
{
int n, m;
f >> n >> m;
for (int i=1; i<=n; i++)
f >> str[0][i];
for (int niv=1; (1<<niv)<=n; niv++)
{
for (int i=1; i<=n; i++)
str[niv][i]=str[niv-1][str[niv-1][i]];
}
while (m--)
{
int x, s;
f >> x >> s;
g << query (x, s) <<'\n';
}
}