Cod sursa(job #395153)

Utilizator mihaionlyMihai Jiplea mihaionly Data 12 februarie 2010 11:45:46
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
using namespace std;
#define nmax 250010
#define pow(y) 1<<y
int A[20][nmax];
int n,m,i,j,k,p,q;
int main()
 {
 FILE *f=fopen("stramosi.in","r");
 //ifstream f("stramosi.in");
 FILE *g=fopen("stramosi.out","w");
 //ofstream g("stramosi.out");
 //f>>n>>m;
 fscanf(f,"%d %d",&n,&m);
 for(i=1;i<=n;++i) fscanf(f,"%d",&A[0][i]);
 k=1;
 while(pow(k)<=n)
  {
  for(i=1;i<=n;i++)
   A[k][i]=A[k-1][A[k-1][i]];
  ++k;
  }
 for(i=1;i<=m;++i)
  {
  fscanf(f,"%d %d",&p,&q);
  //f>>p>>q;
  while(p&&q)
   {
   for(j=k;j>=0&&p&&q;--j)
    if(pow(j)<=q&&p&&q)
	 {
	 p=A[j][p];
	 q-=pow(j);
	 }
   fprintf(g,"%d\n",p);
   //g<<p<<endl;
   }
  }
 return 0;
 }