Cod sursa(job #1757917)

Utilizator AnaRaduAna-Maria Radu AnaRadu Data 16 septembrie 2016 04:06:37
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <stdio.h>
int d[250001][20];
//d[i][j]=al 2^j-lea stramos al lui i
int main(){
    FILE *fin,*fout;
    fin=fopen("stramosi.in","r");
    fout=fopen("stramosi.out","w");
    int i,j,n,m,p,q;
    fscanf(fin,"%d%d",&n,&m);
    for(i=1;i<=n;i++)
        fscanf(fin,"%d",&d[i][0]);
    for(i=1;i<=n;i++)
        for(j=1;(1<<j)<=n;j++)
            d[i][j]=d[d[i][j-1]][j-1];
    for(i=1;i<=m;i++){
        fscanf(fin,"%d%d",&q,&p);
        for(j=0;(1<<j)<=p&&q>0;j++)
            if(((1<<j)&p))
                q=d[q][j];
        fprintf(fout,"%d\n",q);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}