Pagini recente » Cod sursa (job #2683988) | Cod sursa (job #2397074) | Cod sursa (job #1788908) | Cod sursa (job #970141) | Cod sursa (job #3260487)
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int log22[250002];
int tata[250002];
int stra[250002][20];
// 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;
}