Cod sursa(job #1041742)

Utilizator miu_mik93FMI - Paduraru Miruna miu_mik93 Data 26 noiembrie 2013 01:37:36
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#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;
}