Pagini recente » Cod sursa (job #1367389) | Cod sursa (job #2611568) | Cod sursa (job #1132482) | Cod sursa (job #1228986) | Cod sursa (job #1152031)
#include <fstream>
using namespace std;
int v[1000005];
int n,q,a,b,val,op,poz;
void update(int nod, int st, int dr) {
if(st==dr && st==poz) {
v[nod]=val;
return;
}
int mid=((st+dr)>>1);
if(poz<=mid)
update(nod<<1,st,mid);
if(poz>mid)
update((nod<<1)+1,mid+1,dr);
v[nod]=max(v[nod<<1],v[(nod<<1)+1]);
}
int query(int nod, int st, int dr) {
int qs=0,qd=0;
if(st>=a && dr<=b)
return v[nod];
int mid=((st+dr)>>1);
if(a<=mid)
qs=query(nod<<1,st,mid);
if(b>mid)
qd=query((nod<<1)+1,mid+1,dr);
return max(qs,qd);
}
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) {
g<<query(1,1,n)<<"\n";
}
else {
poz=a;val=b;
update(1,1,n);
}
}
return 0;
}