Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #3323999) | Cod sursa (job #3335421) | Cod sursa (job #3331700)
#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 ans=poz;
int curr_niv=0;
while (nivel)
{
if (nivel%2)
ans=str[curr_niv][ans];
curr_niv++;
nivel/=2;
if (!ans) break;
}
return ans;
}
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';
}
}