Pagini recente » Cod sursa (job #1015231) | Cod sursa (job #1784500) | Cod sursa (job #2855408) | Cod sursa (job #988515) | Cod sursa (job #1041742)
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <string>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include <algorithm>
#include <vector>
#include <cstdio>
#include <cstring>
#include <fstream>
#include <queue>
#include <cstdlib>
#include <iomanip>
using namespace std;
#define NMAX 250001
int v[18][NMAX];
int main()
{
FILE *f = fopen("stramosi.in", "r");
FILE *g = fopen("stramosi.out", "w");
int N, M;
fscanf(f, "%d %d", &N, &M);
for (int i = 1; i <= N; i++)
{
fscanf(f, "%d", &v[0][i]);
}
for (int i = 1; i <= 17; i++)
{
for (int j = 1; j <= N; j++)
{
v[i][j] = v[i-1][v[i-1][j]]; // al 2^i lea stramos a lui j
}
}
int P, Q;
for (int i = 0; i < M; i++)
{
fscanf(f, "%d %d", &Q, &P);
for ( int j = 17; j >= 0 && Q != 0; j--)
{
if ( P & ( 1<<j ) )
Q = v[j][Q];
}
fprintf(g, "%d\n", Q);
}
fclose(f);
fclose(g);
return 0;
}