Pagini recente » Cod sursa (job #2713437) | Cod sursa (job #445292) | Cod sursa (job #1019795) | Cod sursa (job #2512160) | Cod sursa (job #435850)
Cod sursa(job #435850)
#include <cstdio>
#include <cstring>
int n,m;
int stram[20][250050];
bool desc[20];
void intr()
{
int nod,nr,max;
scanf("%d%d",&nod,&nr);
memset(desc,0,sizeof(desc));
for (int i=0;nr;++i)
if (1<<i&nr)
{
desc[i]=1;
nr-=1<<i;
max=i;
}
int st=nod;
int i=max;
do
{
if (desc[i])
st=stram[i][st];
}
while (i--);
printf("%d\n",st);
}
void citire()
{
scanf("%d%d",&n,&m);
for (int i=1;i<=n;++i)
scanf("%d",&stram[0][i]);
}
void proces()
{
for (int j=1;1<<j<=n;++j)
for (int i=1;i<=n;++i)
stram[j][i]=stram[j-1][stram[j-1][i]];
}
int main()
{
freopen ("stramosi.in","r",stdin);
freopen ("stramosi.out","w",stdout);
citire();
proces();
while (m--)
intr();
return 0;
}