Cod sursa(job #3237235)

Utilizator nistor_dora_valentinaNistor Dora Valentina nistor_dora_valentina Data 7 iulie 2024 12:23:41
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m, i, j, v[250005], stramosi[250005][25], q, p, ans;
///stramosi[i][j] se memoreaza al 2^j-lea stramos al lui i
///
int main()
{
    fin>>n>>m;
    for(i=1; i<=n; i++)
        fin>>stramosi[i][0];
    for(i=1; i<=20; i++)
      for(j=1; j<=n; j++)
      stramosi[i][j]=stramosi[stramosi[i][j-1]][j-1];
    while(m--)
    {
        fin>>q>>p;
        i=1;
        ans=q;
        for(i=20; i>=0; i--)
        {
            if(p>=1<<i) ///gasim cea mai mare putere i, a.i. 2^i<=p
            {
                ans=stramosi[ans][i];
                p-=1<<i;
            }
            if(ans==0)
                    break;
        }
        fout<<ans<<'\n';
    }
    return 0;
}