Pagini recente » Cod sursa (job #1019158) | Cod sursa (job #2429416) | Cod sursa (job #1826492) | Cod sursa (job #1046193) | Cod sursa (job #1152133)
#include <fstream>
using namespace std;
int v[300005];
int n,q,a,b,val,op,poz, maxim;
inline int Max(int i, int j) {
return i>j ? i : j;
}
void update(int nod, int st, int dr) {
int dn=(nod<<1);
if(st==dr && st==poz) {
v[nod]=val;
return;
}
int mid=((st+dr)>>1);
if(poz<=mid)
update(dn,st,mid);
else
if(poz>mid)
update((dn)+1,mid+1,dr);
v[nod]=max(v[dn],v[(dn)+1]);
}
void query(int nod, int st, int dr) {
int dn=(nod<<1);
if(st>=a && dr<=b) {
maxim = max(maxim, v[nod]);
return ;
}
int mid=((st+dr)>>1);
if(a<=mid)
query(dn,st,mid);
if(b>mid)
query((dn)+1,mid+1,dr);
}
int main() {
ifstream f("arbint.in");
ofstream g("arbint.out");
f>>n>>q;
// for(i=1;i<=2*n;i++)
// v[i]=-2000000000;
register int i;
for(i=1;i<=n;i++) {
f>>val;
poz=i;
update(1,1,n);
}
for(i=1;i<=q;i++) {
f>>op>>a>>b;
if(op==0) {
maxim = 0;
query(1,1,n);
g<<maxim<<"\n";
}
else {
poz=a;val=b;
update(1,1,n);
}
}
return 0;
}