Cod sursa(job #2469079)

Utilizator roberttrutaTruta Robert roberttruta Data 6 octombrie 2019 15:02:39
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;
int n,m,i,j,x,y,k,afis,s,v[500005][32],pw[32],lg[250005];
int main()
{
    ifstream f("stramosi.in");
    ofstream g("stramosi.out");

    f>>n>>m;
    pw[0]=1;
    for(i=1;i<=30;i++)
    pw[i]=pw[i-1]*2;
    k=0;
    for(i=1;i<=n;i++)
    if(pw[k]==i)
    {
        lg[i]=k;
        k++;
    }
    else
        lg[i]=k-1;

    for(i=1;i<=n;i++)
    {
        f>>x;
        v[i][0]=x;
    }
    for(j=1;j<=lg[n];j++)
    for(i=1;i<=n;i++)
    v[i][j]=v[v[i][j-1]][j-1];

   for(i=1;i<=m;i++)
    {
        f>>x>>y;
        s=0;
        while(s!=y)
        {
            k=lg[y-s];
            s+=pw[k];
            afis=v[x][k];
            x=afis;
        }
        g<<afis<<'\n';
    }


    return 0;
}