Pagini recente » Cod sursa (job #687799) | Cod sursa (job #1622439) | Cod sursa (job #2624735) | Cod sursa (job #504144) | Cod sursa (job #656847)
Cod sursa(job #656847)
//
// RMQ[i][j]=al 2^j stramos a lui i
#include<fstream>
#define NMAX 250100
using namespace std;
int n,RMQ[NMAX][20],log_2[NMAX];
void _rmq() {
int i,j;
for(i=2;i<=n;i++)
log_2[i]=log_2[i/2]+1;
for(j=1;(1<<j)<=n;j++)
for(i=1;i<=n;i++)
RMQ[i][j]=RMQ[ RMQ[i][j-1] ][ j-1 ];
}
int main() {
int i,m,x,y;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
in>>n>>m;
for(i=1;i<=n;i++)
in>>RMQ[i][0];
_rmq();
for(i=0;i<m;i++) {
in>>x>>y;
while(y&&x) {
x=RMQ[x][log_2[y]];
y-=(1<<log_2[y]);
}
out<<x<<'\n';
}
return 0;
}