Pagini recente » Cod sursa (job #2301860) | Cod sursa (job #3135484) | Cod sursa (job #2541050) | Cod sursa (job #2879484) | Cod sursa (job #216673)
Cod sursa(job #216673)
#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;
}