Pagini recente » Cod sursa (job #3217133) | Cod sursa (job #420955) | Cod sursa (job #1978355) | Cod sursa (job #868600) | Cod sursa (job #1397347)
#include <fstream>
#include <iostream>
using namespace std;
#define DIM 250010
#define logDIM 22
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int Str[logDIM][DIM],Lg[DIM],i,j,n,m,ans,x,y;
void caut(int x, int y)
{
int aux,log2;
if(y == 0)
return;
log2 = Lg[ y ];
ans = Str[ log2 ][ x ];
caut( Str[ log2 ][ x ] , y - ( 1 << log2) );
}
int main()
{
in>>n>>m;
for(i=1 ; i<=n ; ++i)
in>>Str[0][i];
for(i=2 ; i<=n ; ++i)
Lg[ i ] = Lg[ i / 2 ] + 1;
for(i=1 ; i<=Lg[n] ; ++i)
for(j=1 ; j<=n ; ++j)
Str[ i ][ j ] = Str[ i - 1 ][ Str[ i - 1 ][ j ] ];
for(i=1 ; i<=m ; ++i)
{
in>>x>>y;
caut( x , y );
out<<ans<<'\n';
}
return 0;
}