Pagini recente » Cod sursa (job #2143574) | Cod sursa (job #1281625) | Cod sursa (job #705718) | Profil M@2Te4i | Cod sursa (job #2095235)
#include <bits/stdc++.h>
#define Nmax 131073
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int A[2*Nmax],n,m,N=1;
void build(){
for (int i = N-1; i >= 1; i--) A[i] = max(A[i<<1], A[i<<1|1]);
}
void modify(int p,int val){
for (A[p += N-1] = val; p > 1; p >>= 1) A[p>>1] = max(A[p], A[p^1]);
}
int query(int l,int r){
int res = 0;
for (l += N-1, r += N; l < r; l >>= 1, r >>= 1){
if (l & 1) res = max(res, A[l++]);
if (r & 1) res = max(res, A[--r]);
}
return res;
}
int main()
{
f>>n>>m;
while (N<n) N<<=1;
for (int i=1;i<=n;i++)
f>>A[N+i-1];
build();
int t,p,val;
for (int i=1;i<=m;i++){
f>>t>>p>>val;
if (t==0) g<<query(p,val)<<'\n';
else modify(p,val);
}
return 0;
}