Pagini recente » Cod sursa (job #2501097) | Cod sursa (job #2602627) | Cod sursa (job #1975463) | Cod sursa (job #3165102) | Cod sursa (job #2771605)
#include <bits/stdc++.h>
using namespace std;
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()
{
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";
}
return 0;
}