Pagini recente » Cod sursa (job #1445634) | Cod sursa (job #2533890) | Cod sursa (job #3199302) | Cod sursa (job #1053071) | Cod sursa (job #1649550)
#define nMax 250001
#include <fstream>
#include <iomanip>
using namespace std;
ifstream x ("stramosi.in");
ofstream y ("stramosi.out");
int n,m;
int v[nMax];
int trick[19][nMax];
int We_have_to_go_deeper(int level, int q, int p)
{
if(level==18)
return 0;
if(p==0)
return q;
if(p%2==1)
{
level++;
return We_have_to_go_deeper(level,trick[level][q],p/2);
}
while(p%2==0)
{
level++;
p/=2;
}
return We_have_to_go_deeper(level,trick[level][q],p);
}
void Molecular_Animations_Generated_InterCacodemomanic()
{
//cacodemomania --> pathological belief that one is inhabited by an evil spirit
int i,j;
for(i=1;i<=18;i++)
for(j=1;j<=n;j++)
trick[i][j]=trick[i-1][trick[i-1][j]];
}
int main()
{
int i,j;
x>>n>>m;
for(i=1;i<=n;i++)
x>>trick[0][i];
Molecular_Animations_Generated_InterCacodemomanic();
/*
for(i=0;i<=18;i++)
{
for(j=1;j<=n;j++)
y<<setw(3)<<trick[i][j];
y<<'\n';
}
y<<'\n';
*/
int q,p;
int level;
for(i=0;i<m;i++)
{
x>>q>>p;
level=0;
while(p%2==0)
{
level++;
p/=2;
}
y<<We_have_to_go_deeper(level,trick[level][q],p/2)<<'\n';
}
return 0;
}