Pagini recente » Cod sursa (job #84087) | Cod sursa (job #2192827) | Cod sursa (job #45237) | Cod sursa (job #2790284) | Cod sursa (job #3260480)
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int log22[100002];
int tata[100002];
int stra[100002][18];
// stra[i][j]= al 2^j stramos al lui i
int main()
{
fin >> n>>m;
log22[1] = 0;
for(int i = 2; i <= n; i++)
{
log22[i] = 1 + log22[i/2];
}
for (int i = 1; i <= n; i++)
{ fin >> tata[i];
stra[i][0]= tata[i];
}
int m;
for(int j= 1; (1<<j) <n ;j++)
{
for (int i = 1; i <= n; i++)
stra[i][j]= stra[stra[i][j - 1]][j-1];
}
for (int i = 1; i <= m; i++)
{
int p, q;
cin >> q >> p;
// al p- lea stramos al lui q
int x=q;
while(p>0){
int k = log2[p];
x = stra[x][k];
p =p - (1<<k);
}
fout << x<<'\n';
}
return 0;
}