Cod sursa(job #1868930)

Utilizator AhileGigel Frone Ahile Data 5 februarie 2017 14:15:48
Problema Arbori de intervale Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<bits/stdc++.h>
#define in f
#define out g
using namespace std;

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

int const maxsize = 100000;

int n, m, code, a, b;
int v[maxsize];
int h[1000];

int main() {

    in >> n >> m;
    int s = sqrt(n);
    for (int i = 1; i <= n; i++)
        in >> v[i];
    for (int i = 1; i <= m; i++) {
        in >> code >> a >> b;
        if (code == 0) {
            int maxx = 0;
            for (int j = a; j <= b; j++) {
                if(j % s == 0 && j + s <= b) {
                    maxx = max(maxx, h[j / s]);
                    j += (s - 1);
                } else
                    maxx = max(maxx, v[j]);
            }
            out << maxx << endl;
        } else {
            v[a] = b;
            h[a / s] = max(h[a / s], b);
        }
    }
    return 0;
}