Cod sursa(job #3277806)

Utilizator Victor5539Tanase Victor Victor5539 Data 17 februarie 2025 13:52:56
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

const int MAX=250000;
int v[MAX+5],m,n,i,r[18][MAX+5],x,stramos,E[MAX+5];

void precalc()
{
    int p;

    E[1]=0;

    for (i=1; i<=n; i++)
        r[0][i]=v[i];

    for (p=1; (1<<p)<=n; p++)
    {
        E[(1<<p)]=E[(1<<(p-1))]+1;
        for (i=1; i<=n; i++)
        {
            int stramos=r[p-1][i];
            r[p][i]=r[p-1][stramos];
        }
    }
}

int main()
{
    fin>>n>>m;
    for (i=1; i<=n; i++)
        fin>>v[i];

    precalc();

    while (m)
    {
        fin>>stramos>>x;

        while (x)
        {
            int lsb=x&(-x);

            stramos=r[E[lsb]][stramos];

            x-=lsb;
        }
        fout<<stramos<<"\n";
        m--;
    }
    return 0;
}