Cod sursa(job #3167693)

Utilizator maryyMaria Ciutea maryy Data 10 noiembrie 2023 23:49:05
Problema Arbori de intervale Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int v[100101], b[100101];
const int l=1024;
void DisplayB()
{
    for(int i=0; i<l; i++)
    {
        out<<b[i]<<" ";
    }out<<'\n';
}
int main()
{
    int n, m;
    in>>n>>m;
    for(int i=0; i<n; i++)
    {
        in>>v[i];
    }
    for(int i=0; i<n; i++)
    {
        if(v[i]>b[i/l])
        {
            b[i/l]=v[i];
        }
    }
    int op, x, y, maxi=0;
    for(int i=0; i<m; i++)
    {
        in>>op>>x>>y; x--; y--;
        maxi=0;
        if(op==1)
        {
            v[x]=y;
            if(v[x]>b[x/l])
                b[x/l]=v[x];
        }
        else
        {
            for(int j=x; j<=y;)
            {
                if(j%l==0 && j+l-1<=y)
                {
                    maxi=max(maxi, b[j/l]);
                    j=j+l;
                }
                else
                {
                    maxi=max(maxi, v[j]);
                    j++;
                }
            }
            out<<maxi<<'\n';
        }
    }
    //DisplayB();
}