Pagini recente » Cod sursa (job #214514) | Monitorul de evaluare | Cod sursa (job #459600) | Statistici Iulia Popa (iuliaiulia1999) | Cod sursa (job #757964)
Cod sursa(job #757964)
#include <fstream>
#include <stdlib.h>
#include <string.h>
using namespace std;
long N,M;
long A[260000];
long P[19][260000];
void Compute(void)
{
long i,j;
for (i = 1;i <= N;i += 1)
{
P[0][i] = A[i];
}
for (i = 1;i < 19;i += 1)
{
for (j = 1;j <= N;j += 1)
{
P[i][j] = P[i - 1][P[i - 1][j]];
}
}
}
long Cauta(long Q,long C)
{
long mm = 18;
long c = Q;
while (mm >= 0)
{
if ((C & (1 << mm)) == (1 << mm))
{
c = P[mm][c];
}
mm -= 1;
}
return c;
}
int main(void)
{
fstream fin("stramosi.in",ios::in);
fstream fout("stramosi.out",ios::out);
long i,j,a,b;
fin >> N >> M;
for (i = 1;i <= N;i += 1)
{
fin >> A[i];
}
Compute();
for (i = 0;i < M;i += 1)
{
fin >> a >> b;
fout << Cauta(a,b) << "\n";
}
fin.close();
fout.close();
return 0;
}