Cod sursa(job #3232357)

Utilizator JuliaGrasuJulia Grasu JuliaGrasu Data 30 mai 2024 02:15:04
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 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;
    ++exponent;
}

//

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

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

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

    g<<q<<endl;
}

return 0;
}