Pagini recente » Cod sursa (job #692860) | Cod sursa (job #947926) | Cod sursa (job #2460684) | Cod sursa (job #2462133) | Cod sursa (job #607010)
Cod sursa(job #607010)
// stramosi.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#include <math.h>
int t[13][250001];
void Inmulteste(int* t1,int* t2,int* dest,int N)
{
int i;
for(i=1;i<=N;i++)
dest[i] = t1[t2[i]];
}
int main(int argc, char* argv[])
{
int M,N;
int P,Q;
int i,j;
FILE *fpr,*fpw;
fpr = fopen("stramosi.in","r");
fpw = fopen("stramosi.out","w");
fscanf(fpr,"%d %d",&N,&M);
for(i=1;i<=N;i++)
fscanf(fpr,"%d",&t[0][i]);
int logN = log((float)N)/log((float)2);
for(i=1;i<=logN;i++)
Inmulteste(t[i-1],t[i-1],t[i],N);
for(i=1;i<=M;i++){
fscanf(fpr,"%d %d",&Q,&P);
j=0;
while(P!=0){
if(P%2==1)
Q=t[j][Q];
j++;
P>>=1;
}
fprintf(fpw,"%d\n",Q);
}
fclose(fpr);
fclose(fpw);
return 0;
}