Pagini recente » Concursuri | Ciorna | caracatita_paul | Cod sursa (job #1528596) | Cod sursa (job #114798)
Cod sursa(job #114798)
#define P(x,y) if(y>=131072){x=18;y-=131072;} else if(y>=65536){x=17;y-=65536;} else if(y>=32768){x=16;y-=32768;} else if(y>=16384){x=15;y-=16384;} else if(y>=8192){x=14;y-=8192;} else if(y>=4096){x=13;y-=4096;} else if(y>=2048){x=12;y-=2048;} else if(y>=1024){x=11;y-=1024;} else if(y>=512){x=10;y-=512;} else if(y>=256){x=9;y-=256;} else if(y>=128){x=8;y-=128;} else if(y>=64){x=7;y-=64;} else if(y>=32){x=6;y-=32;} else if(y>=16){x=5;y-=16;} else if(y>=8){x=4;y-=8;} else if(y>=4){x=3;y-=4;} else if(y>=2){x=2;y-=2;} else {x=1;y-=1;}
#include <string.h>
#include <fstream.h>
#define N 300000
int main ()
{
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
long n,m,i,j,x,y,s;
long q[20][N];
memset(q,0,sizeof(q));
fin>>n>>m;
for (i=1;i<=n;i++)
{fin>>q[1][i];}
for (i=2;i<=18;i++)
{for (j=1;j<=n;j++)
{q[i][j]=q[i-1][q[i-1][j]];
}
}
for (i=1;i<=m;i++)
{fin>>x>>y;
while(y)
{P(s,y)
x=q[s][x];
}
fout <<x<<'\n';
}
return 0;
}