Cod sursa(job #1573361)

Utilizator vnedelcuVictor Andrei Nedelcu vnedelcu Data 19 ianuarie 2016 17:29:04
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>

const int nmax=250001;
int str[18][nmax];///str[i][j]=stramosul lui j cu 2^i nivele mai sus

int main()
{
    FILE *f,*f1;
    int n,m,i,j,p,q;

    f=fopen("stramosi.in","r");
    fscanf(f,"%d%d",&n,&m);
    for (i=1; i<=n; i++)
        fscanf(f,"%d",&str[0][i]);

    for (i=1; (1 << i) <= n; i++)
        for (j=1; j <= n; j++)
            str[i][j]=str[i-1][str[i-1][j]];

    f1=fopen("stramosi.out","w");
    for (i=1; i<=m; i++)
    {
        fscanf(f,"%d%d",&q,&p);
        for (j=0; (1 << j) <= p; j++)
            if ((p >> j) & 1)
                q=str[j][q];
        fprintf(f1,"%d\n",q);
    }
    fclose(f);
}