Cod sursa(job #1881316)

Utilizator xraven78Eduard Mihes xraven78 Data 16 februarie 2017 13:00:11
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
using namespace std;

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int v[25][250010],i,j,n,m,lg[250005],q1,q2,k,li;

int rez(int membru, int stramos)
{
    if(stramos==0)
        return membru;
    k=lg[stramos];
    li=lg[stramos];
    k=1<<(k-1);
    return rez (v[li][membru], stramos-k);
}


int main()
{
    f>>n>>m;
    for(i=1;i<=n;i++)
        f>>v[1][i];
    lg[1]=1;
    for(i=2;i<=250004;i++)
        lg[i]=lg[i/2]+1;
    for(i=2;i<=lg[n];i++)
        for(j=1;j<=n;j++)
        v[i][j]=v[i-1][v[i-1][j]];

    for(i=1;i<=m;i++)
        {
            f>>q1>>q2;
            g<<rez(q1,q2)<<'\n';
        }

    return 0;
}