Pagini recente » Cod sursa (job #1545237) | Cod sursa (job #560835) | Cod sursa (job #1409497) | Cod sursa (job #317946) | Cod sursa (job #3260483)
#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()
{
int n, m;
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];
}
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;
fin >> q >> p;
// al p- lea stramos al lui q
int x=q;
while(p>0)
{
int k = log22[p];
x = stra[x][k];
p =p - (1<<k);
}
fout << x<<'\n';
}
return 0;
}