Cod sursa(job #3333327)

Utilizator g.vladGociu Vlad g.vlad Data 13 ianuarie 2026 09:51:53
Problema Arbori de intervale Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.44 kb

#include <fstream>
#include <vector>

std::ifstream in("arbint.in");
std::ofstream out("arbint.out");
using std::vector;

unsigned N;

struct ArbInt {
    vector<unsigned> maxi;

    ArbInt() {
        this->maxi.reserve(N << 2);
        unsigned value;
        for(unsigned i = 1; i <= N; i += 1) {
            in >> value;
            this->write(i, value);
        }
    }

    void write(unsigned target, unsigned value) {
        unsigned left = 1, right = N, idx = 1, middle;
        while(target != left || target != right) {
            middle = (left + right) / 2;

            if (this->maxi[idx] < value) this->maxi[idx] = value;

            if (target <= middle) {
                idx = idx * 2;
                right = middle;
            }

            else {
                idx = idx * 2 + 1;
                left = middle + 1;
            }
        }
        this->maxi[idx] = value;
    }

    unsigned read(
        unsigned target_left,
        unsigned target_right,
        unsigned left = 1,
        unsigned right = N,
        unsigned idx = 1
    ) {
        if(target_left <= left && right <= target_right) {
            return this->maxi[idx];
        }

        const unsigned middle = (left + right) / 2;
        unsigned ret = 0;

        if(middle < target_left)

        return ret;
    }
};

int main()
{
    // I made this on another pc so I had to save ;-;
    return 0;
}