Cod sursa(job #153019)

Utilizator thestickTudor A thestick Data 10 martie 2008 00:25:19
Problema Stramosi Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <stdio.h>
#define P2 19
#define BIG ((1<<P2)-1)

int x[19][BIG];
long n,m;

void postcac()
{
int i,j;
for(i=1;i<19;i++)
        for(j=1;j<=n+1;j++)
        {
        x[i][j-1]=x[i-1][x[i-1][j-1]];
        }
}

long query(int st,int nv)
{
int r,i,j;
r=st;
for(i=BIG+1,j=P2;i>0;i=i>>1,j--)
        {
        if((i&nv)==i)
                {
                r=x[j][r];
                }
        }

return r;
}

void cit()
{
FILE *f;
FILE *g;
int i,st,nv;
f=fopen("stramosi.in","r");
g=fopen("stramosi.out","w");

fscanf(f,"%d %d",&n,&m);

for(i=1;i<=n;i++)
        {
        fscanf(f,"%d",&x[0][i]);
        }
postcac();
for(i=0;i<m;i++)
        {
        fscanf(f,"%d %d",&st,&nv);
        fprintf(g,"%d\n",query(st,nv));
        }
fclose(f);
fclose(g);
}

int main()
{
cit();
return 0;
}