Pagini recente » Cod sursa (job #1675525) | Cod sursa (job #2314931) | Cod sursa (job #2152670) | Cod sursa (job #2043349) | Cod sursa (job #216643)
Cod sursa(job #216643)
#include<stdio.h>
#include<math.h>
int main()
{
long int n,m,i,matrice[20][500],q,p,k=1,raspuns;
FILE *pFile;
FILE *pFileOut;
pFile = fopen ("stramosi.in","r");
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++)
{
fscanf(pFile,"%ld",&q);
fscanf(pFile,"%ld",&p);
k=0;
while((long int)pow(2,k)<=p) k++;
if((long int)pow(2,k)>p) k--;
raspuns=matrice[(long int)pow(2,k)] [q];
p=p-(long int)pow(2,k);
while(p!=0)
{
k=0;
while((long int)pow(2,k)<=p) k++;
if((long int)pow(2,k)>p) k--;
p=p-(long int)pow(2,k);
raspuns=matrice[(long int)pow(2,k)][raspuns];
}
fprintf(pFileOut,"%ld\n",raspuns);
}
fclose(pFile);
fclose(pFileOut);
return 0;
}