Pagini recente » Cod sursa (job #1849489) | Cod sursa (job #3173278) | Cod sursa (job #2422473) | Cod sursa (job #1829245) | Cod sursa (job #483629)
Cod sursa(job #483629)
#include<fstream.h>
#define NMAX 250005
#define in ifstream fin("stramosi.in")
#define out ofstream fout("stramosi.out")
using namespace std;
long n,a[32][NMAX],t[NMAX],m,w,p;
long str(long k)
{ if(p<w&&t[k]>0)
{++p;
return str(t[k]);
}
else
if(p==w)
return k;
else
if(t[k]==0)
return 0;
}
int main()
{in;
out;
long P,q,i,j;
fin>>n>>m;
for(i=1;i<=n;++i)
fin>>t[i];
for(i=1;i<=n;++i)
a[0][i]=t[i];
w=1;
for(i=1;i<=30;++i)
{w*=2;
for(j=1;j<=n;++j)
{p=w/2;
a[i][j]=str(a[i-1][j]);}
}
for(j=1;j<=m;++j)
{fin>>q>>P;
for(i=0,w=1;i<=30;++i,w*=2)
if(P<w)
break;
p=w/2;
w=P;
fout<<str(a[i-1][q])<<'\n';
}
fin.close();
fout.close();
return 0;
}