Cod sursa(job #241184)

Utilizator vlad2179Popescu Vlad Alexandru vlad2179 Data 9 ianuarie 2009 16:00:51
Problema Stramosi Scor 100
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,i,j;

 fscanf(f,"%ld %ld",&n,&m);
 for(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(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&&q){
   if(p&1)q=A[niv][q];
   p>>=1;niv++;}
   fprintf(g,"%ld\n",q);
 }
}