Cod sursa(job #3280347)

Utilizator Alex_DumitrascuAlex Dumitrascu Alex_Dumitrascu Data 26 februarie 2025 11:33:23
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");

int stramosi[20][250005];
int lg2[250005];

int main()
{
    fin.tie(0); fin.sync_with_stdio(false);
    int n, m; fin>>n>>m;
    for (int i=2; i<=n; i++) lg2[i]=lg2[i/2]+1;
    for (int i=1; i<=n; i++) {
        fin>>stramosi[0][i];
        //cout<<stramosi[0][i]<<' ';
    }
    //cout<<endl;
    for (int i=1; i<=lg2[n]; i++) {
        for (int j=1; j<=n; j++) {
            stramosi[i][j] = stramosi[i-1][stramosi[i-1][j]];
            //cout<<stramosi[i][j]<<' ';
        }
        //cout<<endl;
    }
    int q, p;
    for (int i=1; i<=m; i++) {
        fin>>q>>p; //al p-lea stramos al lui q
        int s=q;
        // cout<<p<<' '<<lg2[p]<<endl;
        while (p!=0) {
            int l = lg2[p];
            s=stramosi[l][s];
            if (s==0) break;
            p-=(1<<l);
        }
        fout<<s<<'\n';
    }
    return 0;
}