Pagini recente » Cod sursa (job #3184681) | Cod sursa (job #1357623) | Cod sursa (job #2880155) | Cod sursa (job #558181) | Cod sursa (job #312290)
Cod sursa(job #312290)
#include <iostream>
#include <fstream>
using namespace std;
#define MAXP 18
int n,m;
int q,p;
int stram[250001][MAXP];
int pows[MAXP];
int main() {
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
fin>>n>>m;
pows[0]=1;
for (int i=1;i<MAXP;i++)
pows[i]=pows[i-1]*2;
for (int i=1;i<=n;i++)
fin>>stram[i][0];
stram[0][0]=0;
for (int i=1;i<MAXP;i++) {
for (int j=0;j<=n;j++) {
stram[j][i]=stram[stram[j][i-1]][i-1];
}
}
for (int i=0;i<m;i++) {
fin>>q>>p;
for (int pi = MAXP -1;pi>=0;pi--) {
if (p>=pows[pi]) {
p-=pows[pi];
q=stram[q][pi];
}
}
fout<<q<<endl;
}
fin.close();
fout.close();
return 0;
}