Cod sursa(job #2754203)

Utilizator raresmocanuRares Mihai Mocanu raresmocanu Data 25 mai 2021 13:49:04
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <cmath>
using namespace std;

int t[30][250010];
int main()
{
    ifstream fin("stramosi.in");
    ofstream fout("stramosi.out");
     int n,m;
    fin>>n>>m;
    for(int i=1;i<=n;i++)
        fin>>t[0][i];//initializez "parintele de ordin 0" cu nodul p-zis
    for(int i=1;i<=(int)log2(n);i++)//creez tatii pana la ordinul log2(n)
        for(int j=1;j<=n;j++)
            t[i][j]=t[i-1][t[i-1][j]];//tatal de ordin superior tatal de ordin inferior al tatalui de ordin inferior
    int depth,q,pow;
    for(int i=0;i<m;i++)
    {
        pow=0;//lista in care caut
        fin>>q>>depth;
        while(depth)//pana cand am ajuns
        {
            if(depth%2)
                q=t[pow][q];
            depth /= 2;
            pow++;//maresc pasul in care caut
        }
        fout<<q<<'\n';
    }

    return 0;
}