Cod sursa(job #1045920)

Utilizator Daniel3717Aleca Daniel Adrian Daniel3717 Data 2 decembrie 2013 12:40:52
Problema Stramosi Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int m[250005][20],nn,nq,i,p,q,j;
int stramos(int mem,int ord)
{
    for (int i=0;(1<<i)<=ord;i++)
        if ((ord&(1<<i))!=0)
            mem=m[mem][i];
    return mem;
}
int main(void)
{
    FILE * f;
    f=fopen("stramosi.in","r");
    ofstream g("stramosi.out");
    fscanf(f,"%d%d",&nn,&nq);
    for (i=1;i<=nn;i++)
        fscanf(f,"%d",&m[i][0]);
    for (j=1;j<=log(double(nn));j++)
        for (i=1;i<=nn;i++)
            m[i][j]=m[m[i][j-1]][j-1];
    for (i=1;i<=nq;i++)
    {
        fscanf(f,"%d%d",&q,&p);
        g<<stramos(q,p)<<'\n';
    }
    return 0;
}