Pagini recente » Cod sursa (job #555137) | Cod sursa (job #1571109) | Cod sursa (job #2467530) | Cod sursa (job #595542) | Cod sursa (job #2028501)
#include<fstream>
using namespace std;
ifstream in ("stramosi.in" );
ofstream out("stramosi.out");
int a,b,n,m,aux[250001],p[23],dp[23][250001];
int main(){
in >> n >> m;
for( int i = 1; i <= n; i ++ ){
in>>dp[0][i];
}
for( int j = 1; j <= 21; j ++ ){
for( int i = 1; i <= n; i ++ ){
dp[i][j] = dp[i-1][ dp[i-1][j] ];
}
}
p[0] = 1;
for( int i = 1; i <= 21; i ++ ){
p[i] = p[i-1]*2;
}
for( int i = 2; i <= n; i ++ ){
aux[i] = aux[i/2]+1;
}
for( int k = 1; k <= m; k ++ ){
in >> a >> b;
while( true ){
if( b == 0 ){
break;
}
a = dp[aux[b]][a];
b = b - p[aux[b]];
}
out<<a<<"\n";
}
return 0;
}