Cod sursa(job #1796241)

Utilizator rares1012Rares Cautis rares1012 Data 3 noiembrie 2016 11:31:04
Problema Stramosi Scor 80
Compilator c Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>

int str[250001][17];

inline int put2(int k)
{
    int i=1;
    while(k>0)
    {
        i=i*2;
        k--;
    }
    return i;
}

int main()
{
    int n,m,j,i,k,st,q;
    FILE*fi,*fo;
    fi=fopen("stramosi.in","r");
    fo=fopen("stramosi.out","w");
    fscanf(fi,"%d%d",&n,&m);
    for(i=1;i<=n;i++)
        {
            fscanf(fi,"%d",&str[i][0]);
        }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<17;j++)
            str[i][j]=str[str[i][j-1]][j-1];
    }
    for(i=0;i<m;i++)
    {
        fscanf(fi,"%d%d",&k,&st);
        while(st>0)
        {
            q=17;
            while(put2(q)>st)
                q--;
            st-=put2(q);
            k=str[k][q];
        }
        fprintf(fo,"%d\n",k);
    }
    fclose(fi);
    fclose(fo);
    return 0;
}