Cod sursa(job #241154)

Utilizator vlad2179Popescu Vlad Alexandru vlad2179 Data 9 ianuarie 2009 15:32:57
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>

FILE *f=fopen("stramosi.in","rt");
long A[20][250001];
long n,m;

void date();
void solve();


int main(){
date();
solve();
return 0;
}


void date(){
 long log,x;

 fscanf(f,"%ld %ld",&n,&m);
 for(int i=1;i<=n;i++) fscanf(f,"%u",&A[0][i]);
 log=0;
 x=n;while(x){x/=2;log++;}
 for(i=1;i<=log;i++)
	 for(int j=1;j<=n;j++)
			  A[i][j]=A[i-1][A[i-1][j]];
}


void solve(){
FILE *g=fopen("stramosi.out","wt");
 long p,q,niv;
 for(int i=1;i<=m;i++){
  fscanf(f,"%ld %ld",&q,&p);
  niv=0;long x;
  while(p){
   if(p%2)x=A[niv][q];
   p/=2;niv++;}
   fprintf(g,"%ld\n",x);
 }
}