Cod sursa(job #1770389)

Utilizator mihai.alphamihai craciun mihai.alpha Data 4 octombrie 2016 10:36:57
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <stdio.h>
#define MAX 300000
int mat[MAX+1][20];
int main(){

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

    int n, m;
    fscanf(fin,"%d%d",&n, &m);
    int i, j;
    for(i = 1;i <= n;i++)
        fscanf(fin,"%d", &mat[i][0]);
    for(i=1;i<=n;i++)
        for(j = 1; (1<<j) <= n;j++)
            mat[i][j] = mat[mat[i][j-1]][j-1];
    for(i = 0;i < m;i++){
        int q, p;
        fscanf(fin,"%d%d", &q, &p);
        for(j = 0;(1<<j) <= p && q>0;j++)
            if(((1<<j)&p) != 0)
                q = mat[q][j];
        fprintf(fout,"%d\n",q);
    }
    fclose(fin);
    fclose(fout);
    return 0;
}