Pagini recente » Cod sursa (job #1490829) | Cod sursa (job #2579115) | Cod sursa (job #2723136) | Cod sursa (job #489251) | Cod sursa (job #3280347)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");
int stramosi[20][250005];
int lg2[250005];
int main()
{
fin.tie(0); fin.sync_with_stdio(false);
int n, m; fin>>n>>m;
for (int i=2; i<=n; i++) lg2[i]=lg2[i/2]+1;
for (int i=1; i<=n; i++) {
fin>>stramosi[0][i];
//cout<<stramosi[0][i]<<' ';
}
//cout<<endl;
for (int i=1; i<=lg2[n]; i++) {
for (int j=1; j<=n; j++) {
stramosi[i][j] = stramosi[i-1][stramosi[i-1][j]];
//cout<<stramosi[i][j]<<' ';
}
//cout<<endl;
}
int q, p;
for (int i=1; i<=m; i++) {
fin>>q>>p; //al p-lea stramos al lui q
int s=q;
// cout<<p<<' '<<lg2[p]<<endl;
while (p!=0) {
int l = lg2[p];
s=stramosi[l][s];
if (s==0) break;
p-=(1<<l);
}
fout<<s<<'\n';
}
return 0;
}