Cod sursa(job #2010584)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 13 august 2017 17:40:05
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
#define Nmax 250001
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int a[20][Nmax];
int nlog2(int x, int &put)
{
   put=1;
   if(x==1) return 0;
   int num=0;
   while(put<=x)
   {
       num++;
       put*=2;
   }
   put/=2;
   return num-1;
}
int str(int nr, int x)
{
    int pt;
    int lg=nlog2(nr,pt);
    if(nr==pt) return a[lg][x];
    else
        return str(nr-pt,a[lg][x]);
}
int main()
{
    int n,m,i,j;
    f>>n>>m;
    for(i=1;i<=n;i++)
        f>>a[0][i];
    bool ok=true;
    int N=0;
    while(ok)
    {
        N++;
        ok=false;
        for(i=1;i<=n;i++)
            {
                a[N][i]=a[N-1][a[N-1][i]];
                if(a[N][i]) ok=true;
            }
    }
    for(;m;--m)
    {
        f>>i>>j;
        g<<str(j,i)<<'\n';
    }

    return 0;
}