Pagini recente » Cod sursa (job #339367) | Cod sursa (job #1646250) | Cod sursa (job #2665495) | Cod sursa (job #1310841) | Cod sursa (job #2440887)
#include <iostream>
#include <fstream>
#define MaxN 250001
#define MaxM 300001
#define LogN 18
using namespace std;
int tati[LogN+1][MaxN];
int n,m;
int main()
{
ifstream f("stramosi.in");
ofstream g("stramosi.out");
f>>n>>m;
for(int i=1;i<=n;i++)
f>>tati[1][i];
for(int i=2;i<=LogN;i++)
for(int j=1;j<=n;j++)
tati[i][j]=tati[i-1][tati[i-1][j]];
int q,p;
for(int i=1;i<=m;i++)
{
f>>q>>p;
int rez=q;
for(int j=1;p;j=(j<<1))
{
if(p&j)
{
p-=j;
rez = tati[j][rez];
}
}
g<<rez<<'\n';
}
f.close();
g.close();
return 0;
}