Cod sursa(job #2999286)

Utilizator vlad_maneaManea Vlad Cristian vlad_manea Data 10 martie 2023 19:49:11
Problema Arbori de intervale Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("arbint.in");
ofstream fout("arbint.out");

int n, m, x, poz, c, a, b, vmax;
int v[270000];

void update(int nod, int st, int dr) {
    if (st==dr) {
        v[nod]=x;
        return;
    }
    int mij=(st+dr)/2;
    if (poz<=mij)
        update(nod*2, st, mij);
    else
        update(nod*2+1, mij+1, dr);
    v[nod]=max(v[nod*2], v[nod*2+1]);
}

void query(int nod, int st, int dr) {
    if (st>=a && dr<=b) {
        vmax=max(vmax, v[nod]);
        return;
    }
    int mij=(st+dr)/2;
    if (a<=mij)
        query(nod*2, st, mij);
    if (b>mij)
        query(nod*2+1, mij+1, dr);
}

void citire() {
    fin>>n>>m;
    for (int i=1; i<=n; i++) {
        fin>>x;
        poz=i;
        update(1, 1, n);
    }
}

void operatii() {
    for (int i=1; i<=m; i++) {
        fin>>c>>a>>b;
        if (c==0) {
            vmax=0;
            query(1, 1, n);
            fout<<vmax<<"\n";
        } else {
            poz=a;
            x=b;
            update(1, 1, n);
        }
    }
}

int main() {
    citire();
    operatii();
    return 0;
}