Cod sursa(job #3232355)

Utilizator JuliaGrasuJulia Grasu JuliaGrasu Data 30 mai 2024 01:59:02
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<iostream>
#include<fstream>
using namespace std;

int v[19][250005];
int main(){

int n,m,q,i,j,p, putere, exponent;

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

f>>n>>m;

//citire
for(i=1;i<=n;++i) f>>v[0][i];

//calculare puterea maxima a lui 2 pt care 2^exp <=n
exponent = 0;
putere =1;
while(putere<=n){
    putere = putere*2;
    ++p;
}

--p;

//completez sparse table cu stramosii de nivel j pt fiecare
for(j=1;j<exponent;++j)
    for(i=1;i<=n;i++)
    v[j][i] = v[j-1][ v[j-1][i] ];

for(i=0;i<m;i++){
    f>>q>>p;

    for(j=20;j>-1;j--){
        if(p & (1<<i) )
            q = v[i][q];
    }

    g<<q<<endl;
}

return 0;
}