Cod sursa(job #3128079)

Utilizator mateilbMatei Balaur mateilb Data 8 mai 2023 16:10:56
Problema Arbori de intervale Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <tgmath.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n, m, rmq[20][10010], c, x, y, lg, i, j, k;
int main() {
    fin>>n>>m;
    for(i=1; i<=n; i++) {
        fin>>rmq[0][i];
    }
    for(i=1; i<=int(log2(n)); i++) {
        for(j=1; j<=n-(1<<i)+1; j++)
            rmq[i][j]=max(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);
    }

    for(k=1; k<=m; k++) {
        fin>>c>>x>>y;
        if(c==0) {
            lg=y-x+1;
            fout<<max(rmq[int(log2(lg))][x], rmq[int(log2(lg))][y-(1<<int(log2(lg)))+1])<<'\n';
        } else {
            rmq[0][x]=y;
            for(i=1; i<=int(log2(n)); i++) {
                for(j=1; j<=n-(1<<i)+1; j++)
                    rmq[i][j]=max(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);
            }
        }
    }
    return 0;
}