Pagini recente » Cod sursa (job #277185) | Cod sursa (job #68096) | Borderou de evaluare (job #963670) | Cod sursa (job #1508560) | Cod sursa (job #3232354)
#include<iostream>
#include<fstream>
using namespace std;
int v[19][250005];
int main(){
int n,m,q,i,j,p, putere, exponent;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
f>>n>>m;
//citire
for(i=1;i<=n;++i) f>>v[0][i];
//calculare puterea maxima a lui 2 pt care 2^exp <=n
exponent = 0;
putere =1;
while(putere<=n){
putere = putere*2;
++p;
}
--p;
//completez sparse table cu stramosii de nivel j pt fiecare
for(j=1;j<exponent;++j)
for(i-1;i<=n;i++)
v[j][i] = v[j-1][ v[j-1][i] ];
for(i=0;i<m;i++){
f>>q>>p;
for(j=20;j>-1;j--){
if(p & (1<<i) )
q = v[i][q];
}
g<<q<<endl;
}
return 0;
}