Pagini recente » Cod sursa (job #3151645) | Cod sursa (job #865239) | Cod sursa (job #2142648) | Cod sursa (job #497536) | Cod sursa (job #288345)
Cod sursa(job #288345)
#include <stdio.h>
#define IN "stramosi.in"
#define OUT "stramosi.out"
#define max1 262144
#define max2 32
FILE *fin=fopen(IN,"r");
FILE *fout=fopen(OUT,"w");
int s[max2][max1];
int n,m;
void cit();
void alg();
int main()
{
cit();
alg();
fclose(fin);
fclose(fout);
return 0;
}
void cit()
{
int i,j;
int x,p=0;
fscanf(fin,"%d %d",&n,&m);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&s[0][i]);
x=n;
while(x)
{
x/=2;
p++;
}
for(i=1;i<=p;i++)
for(j=1;j<=n;j++)
s[i][j]=s[i-1][s[i-1][j]];
}
void alg()
{
int x,y;
int i,niv;
for(i=1;i<=m;i++)
{
fscanf(fin,"%d %d",&x,&y);
niv=0;
while(y && x) /// ambele dif de 0
{
if(y%2==1)
x=s[niv][x];
y>>=1;
niv++;
}
fprintf(fout,"%d\n",x);
}
}