Cod sursa(job #2942469)

Utilizator dobreraduDobre Radu Fabian dobreradu Data 19 noiembrie 2022 18:22:29
Problema Arbori de intervale Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;

const int NMAX = 100000;
int v[NMAX+1],batog[320];

int main()
{
    ifstream in("arbint.in");
    ofstream out("arbint.out");
    int n, m, a, b, i, cer, j;
    in >> n >> m;
    int x = sqrt(n);
    for( i = 0; i < n ; i++ ){
      in >> v[i];
      batog[i / x] = max( batog[i / x] , v[i]);
    }
    for( i = 0 ; i < m ; i++ ){
      in >> cer >> a >> b;
      a--;
      b--;
      if( cer == 0 ){
        int st = a / x , dr = b / x , maxi = 0;
        for( j = a ; j < x * ( st + 1 ) ; j++ )
          maxi = max(maxi , v[j]);
        for( j = st + 1 ; j < dr ; j++ )
          maxi = max(maxi, batog[j]);
        for( j = b ; j >= x * dr; j--)
          maxi = max(maxi, v[j]);
        out << maxi << endl;
      }
      else{
        int y = a / x , maxi = 0;
        v[a] = b;
        for( j = x * y ; j < x * ( y + 1 ); j++ )
          batog[y] = max( maxi , v[j]);
      }
    }
    return 0;
}