Pagini recente » Cod sursa (job #729982) | Cod sursa (job #79311) | Cod sursa (job #610402) | Cod sursa (job #2710677) | Cod sursa (job #3237970)
#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 ) {
aint[pos += (n - 1)] = val;
while ( pos > 1 ) {
pos >>= 1;
aint[pos] = max(aint[2 * pos], aint[2 * pos + 1]);
}
}
int qry( int l, int r ) {
int res = 0;
l += n - 1, r += n; // [l, r]
while ( l < r ) {
if ( l & 1 ) {
res = max(res, aint[l++]);
}
if ( r & 1 ) {
res = max(res, aint[--r]);
}
l >>= 1;
r >>= 1;
}
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;
}