Cod sursa(job #2052488)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 30 octombrie 2017 17:45:05
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<vector>
#include<fstream>

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


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

    for(t=1;(1<<t)<=n;t++)
        for(i=1;i<=n;i++)
            d[i][t]=d[d[i][t-1]][t-1];

    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;
}