Pagini recente » Cod sursa (job #927226) | Cod sursa (job #2609575) | Cod sursa (job #217777) | Cod sursa (job #1928483) | Cod sursa (job #2771622)
#include <bits/stdc++.h>
using namespace std;
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
ifstream f ("stramosi.in");
ofstream g ("stramosi.out");
int n,q;
int dp[300005][30];
int tata[300005];
int query(int nod, int pasi)
{
if(pasi==0 || nod==0)
return nod;
int exp=log2(pasi);
int acum=pow(2, exp);
int tata=dp[nod][exp];
query(tata, pasi-acum);
}
int main()
{
ios_base::sync_with_stdio(false);
f.tie(NULL);
f>>n>>q;
for(int i=1; i<=n; ++i)
{
int x;
f>>x;
tata[i]=x;
}
int put=log2(n);
for(int i=1; i<=n; ++i)
{
if(tata[i]==0)
continue;
else
{
for(int putere=0; putere<=put; ++putere)
{
int put2=pow(2, putere);
dp[i][putere]=query(tata[i], put2-1);
if(dp[i][putere]==0)
break;
}
}
}
for(int qu=1; qu<=q; ++qu)
{
int vf, nr;
f>>vf>>nr;
g<<query(vf, nr)<<"\n";
}
f.close();
g.close();
return 0;
}