Pagini recente » Cod sursa (job #2138196) | Cod sursa (job #1627935) | Cod sursa (job #1454650) | Cod sursa (job #2786010) | Cod sursa (job #1012756)
#include <fstream>
using namespace std;
const int MAX_N = 100002;
int N, M, x, y, ans;
int A[7*MAX_N];
inline void update(int node, int left, int right) {
if(left == right)
A[node] = y;
else {
int m = (left+right)/2;
if(x <= m)
update(2*node, left, m);
else update(2*node + 1, m+1, right);
A[node] = max(A[2*node], A[2*node + 1]);
}
}
inline void query(int node, int left, int right) {
if(x <= left && right <= y)
ans = max(ans, A[node]);
else {
int m = (left+right)/2;
if(x <= m)
query(2*node, left, m);
if(y > m)
query(2*node + 1, m+1, right);
}
}
int main() {
ifstream f("arbint.in");
ofstream g("arbint.out");
f >> N >> M;
for(int i = 1; i <= N; ++i) {
f >> y;
x = i;
update(1, 1, N);
}
for(int i = 1; i <= M; ++i) {
int t;
f >> t >> x >> y;
if(t == 0) {
ans = 0;
query(1, 1, N);
g << ans << "\n";
}
else update(1, 1, N);
}
f.close();
g.close();
return 0;
}