Cod sursa(job #216673)

Utilizator k_ounu_eddyIacob Eduard k_ounu_eddy Data 25 octombrie 2008 10:02:33
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#include<math.h>

long int matrice[20][250001];

int main()
{
long int n,m,i,q,p,k=1,raspuns;
int index;
FILE *pFile= fopen ("stramosi.in","r");;
FILE *pFileOut= fopen("stramosi.out","w");;

fscanf(pFile,"%ld %ld",&n,&m);

for(i=1;i<=n;i++)
  fscanf(pFile,"%ld",&matrice[1][i]);

do
  {k++;
  for(i=1;i<=n;i++)
    matrice[k][i]=matrice[k-1] [matrice[k-1][i]];
  }while((long int)pow(2,k)<=n);

for(i=1;i<=m;i++)
  {index=1;
  fscanf(pFile,"%ld",&q);
  fscanf(pFile,"%ld",&p);

  k=1;
  while(k<=p) {k=k<<1;index++;}
    if(k>p) {k>>1;index--;}

  raspuns=matrice[index][q];
  p=p-k;

  while(p!=0)
    {
    k=0;
    while(k<=p) {k=k<<1;index++;}
    if(k>p) k>>1;
      {p=p-k;index--;}
    raspuns=matrice[k+1][raspuns];
    }
  fprintf(pFileOut,"%ld \n",raspuns);
  }

fclose(pFile);
fclose(pFileOut);
return 0;
}