Pagini recente » Cod sursa (job #1339000) | Cod sursa (job #557139) | Cod sursa (job #1330788) | Cod sursa (job #1313992) | Cod sursa (job #2106080)
#include <bits/stdc++.h>
#define Nmax 100001
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,N,v[3*Nmax],q,t,a,b;
void create(){
for (int i=N-1;i>=1;i--)
v[i] = max(v[i*2+1],v[i*2]);
}
void update(int pos,int val){
for (pos += N-1,v[pos] = val; pos>1; pos/=2)
v[pos/2] = max(v[pos],v[pos^1]);
}
int query(int st,int dr){
int res = 0;
for (st += N-1,dr += N;st<dr;st/=2,dr/=2){
if (st&1) res = max(res,v[st++]);
if (dr&1) res = max(res,v[--dr]);
}
return res;
}
int main()
{
f>>n>>q;
N = 1;
while (N<n) N*=2;
for (int i=1;i<=n;i++)
f>>v[i+N-1];
create();
while (q--){
f>>t>>a>>b;
if (t==1) update(a,b);
else g<<query(a,b)<<'\n';
}
return 0;
}