Cod sursa(job #205976)

Utilizator mihaipoascaPoasca Mihai mihaipoasca Data 3 septembrie 2008 19:24:09
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>

int M,N;
int s[20][250005];

FILE *fin=fopen("stramosi.in","r"),
    *fout=fopen("stramosi.out","w");


int main(){

    fscanf(fin,"%d %d",&N,&M);

    for(int i=1;i<=N;i++)
        fscanf(fin,"%d",&s[0][i]);

    for(int i=1;i<=N;i++)
        for(int j=1;j<=19;j++)
            s[j][i]=s[j-1][s[j-1][i]];

/*
    for(int i=1;i<=N;i++){
        for(int j=0;j<=5;j++)
            fprintf(fout,"%d ",s[i][j]);
        fprintf(fout,"\n");
    }

*/

    for(int i=1;i<=M;i++){
        int q,p;
        fscanf(fin,"%d %d",&q,&p);

        int lg=0;
        while(p){
            if(p%2)
                q=s[lg][q];
            p/=2;
            ++lg;
        }
        fprintf(fout,"%d\n",q);

    }

    fclose(fin);
    fclose(fout);

    return 0;

}