Cod sursa(job #2052502)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 30 octombrie 2017 17:50:57
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<vector>
#include<fstream>

using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int d[250002][19], v[250002], n, m, x, y, i, t,ok;

int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++)
        fin>>d[i][0];

    for(t=1;(1<<t)<=n;t++)
    {
        ok=0;
        for(i=1;i<=n;i++)
        {
            d[i][t]=d[d[i][t-1]][t-1];
            if(d[i][t]!=0)
                ok=1;
        }
        if(ok==0)
            break;
    }

    for(i=2;i<=n;i++)
        v[i]=v[i/2]+1;

    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        while(y)
        {
            x=d[x][v[y]];
            y-=(1<<v[y]);
        }
        fout<<x<<'\n';
    }
    return 0;
}