Pagini recente » Cod sursa (job #1216676) | Cod sursa (job #3137167) | Cod sursa (job #2519163) | Cod sursa (job #2249035) | Cod sursa (job #723806)
Cod sursa(job #723806)
#include<fstream>
#include<cstdio>
using namespace std;
const int MaxN = 250001;
const int MaxL = 21;
const char InFile[] = "stramosi.in";
const char OutFile[] = "stramosi.out";
int N,M,DP[MaxL][MaxN];
int main()
{
ifstream fin( InFile );
ofstream fout( OutFile );
fin >> N >> M;
int i,j,Q,P;
for( i = 1 ; i <= N ; ++i )
fin >> DP[0][i];
for( i = 1 ; i < MaxL ; ++i )
for( j = 1 ; j <= N ; ++j )
DP[i][j] = DP[i-1][DP[i-1][j]];
for( i = 1 ; i <= M ; ++i )
{
fin >> Q >> P;
j = 0;
while( P )
{
if( P & 1 )
Q = DP[j][Q];
++j;
P >>= 1;
}
fout << Q << '\n';
}
fin.close();fout.close();
return 0;
}