Cod sursa(job #607010)

Utilizator Brz_VladBrezae Vlad Brz_Vlad Data 10 august 2011 16:29:48
Problema Stramosi Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
// stramosi.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <math.h>

int t[13][250001]; 

void Inmulteste(int* t1,int* t2,int* dest,int N)
{
	int i;
	for(i=1;i<=N;i++)
		dest[i] = t1[t2[i]];
}

int main(int argc, char* argv[])
{
	int M,N;
	int P,Q;
	int i,j;

	FILE *fpr,*fpw;
	fpr = fopen("stramosi.in","r");
	fpw = fopen("stramosi.out","w");

	fscanf(fpr,"%d %d",&N,&M);
	for(i=1;i<=N;i++)
		fscanf(fpr,"%d",&t[0][i]);

	int logN = log((float)N)/log((float)2);
	for(i=1;i<=logN;i++)
		Inmulteste(t[i-1],t[i-1],t[i],N);

	for(i=1;i<=M;i++){
		fscanf(fpr,"%d %d",&Q,&P);
		j=0;
		while(P!=0){
			if(P%2==1)
				Q=t[j][Q];
			j++;
			P>>=1;
		}
		fprintf(fpw,"%d\n",Q);
	}

	fclose(fpr);
	fclose(fpw);
	return 0;
}