Cod sursa(job #3261438)

Utilizator sebigabiSebastian Itu sebigabi Data 5 decembrie 2024 20:58:40
Problema Stramosi Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int NMAX = 250000 + 1;
const int LOGMAX = 18 + 1;

int n, nr_query;
int stramos[LOGMAX][NMAX];
int log[NMAX];

void precalc()
{
    for(int i=2; i<=n; i++)
    {
        log[i] = log[i/2] + 1;
    }

    for(int i=1; i<=18; i++)
    {
        for(int j=1; j<=n; j++)
        {
            stramos[i][j] = stramos[i-1][ stramos[i-1][j] ];
        }
    }
}

int main()
{
    in.tie(0); in.sync_with_stdio(0);
    out.tie(0); out.sync_with_stdio(0);

    in>>n>>nr_query;
    for(int i=1; i<=n; i++)
    {
        in>>stramos[0][i];
    }

    for(int q=1; q<=nr_query; q++)
    {
        int a, b;
        in>>a>>b;

        int rez = a;
        while(b)
        {
            rez = stramos[log[b]][rez];
            b -= 1<<log[b];
        }

        out<<rez<<"\n";
    }
    return 0;
}