Cod sursa(job #2243428)

Utilizator lixiLixandru Andrei lixi Data 20 septembrie 2018 15:06:40
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include<fstream>
#include<cmath>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int a[18][250001];
int N, M, P, Q;
int main()
{

    f >> N >> M;
    //cout<<log2(250000);
    for(int i = 1; i <= N; i++)
        f >> a[0][i];
    int maxm = (int)log2(N);
    for(int i = 1; i <= maxm ; i++)
        for(int j = 1; j <= N; j++)
            a[i][j] = a[i - 1][a[i - 1][j]];
    while(M--)
    {
        f >> Q >> P; //AL P-lea stramos al elem de pe poz Q
        int poz = maxm;
        while(P)
        {
            if(P & (1 << poz))
            {
                Q = a[poz][Q];
                P -= 1 << poz;
            }
            poz--;
        }
        g << Q << '\n';
    }
    return 0;
}