Pagini recente » Cod sursa (job #778524) | Cod sursa (job #894664) | Cod sursa (job #1644734) | Cod sursa (job #1355940) | Cod sursa (job #3237946)
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ifstream fin( "arbint.in" );
ofstream fout( "arbint.out" );
const int DIM = 1e5 + 1;
int aint[2 * DIM], n;
void upd( int pos, int val ) {
int node = n + pos - 1;
aint[node] = val;
while ( node ) {
node >>= 1;
aint[node] = max(aint[2 * node], aint[2 * node + 1]);
}
}
int qry( int l, int r ) {
int res = 0;
l += n - 1, r += n - 1;
while ( l < r ) {
if ( l & 1 ) {
res = max(res, aint[l++]);
}
if ( r & 1 ) {
res = max(res, aint[--r]);
}
l >>= 1;
r >>= 1;
}
if ( l == r ) res = max(res, aint[l]);
return res;
}
int main() {
ios_base::sync_with_stdio(0);
fin.tie(0);
int q, tp, x, y;
fin >> n >> q;
for ( int i = 1; i <= n; ++i ) {
fin >> x;
upd(i, x);
}
while ( q-- ) {
fin >> tp >> x >> y;
if ( tp == 0 ) {
fout << qry(x, y) << "\n";
} else {
upd(x, y);
}
}
fin.close();
fout.close();
return 0;
}