Pagini recente » Cod sursa (job #2615598) | Cod sursa (job #2238634) | Cod sursa (job #912486) | Cod sursa (job #2643702) | Cod sursa (job #1152033)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("arbint.in");
ofstream fout ("arbint.out");
int n,m,x,v[1000005];
int a,b,q, poz;
int query (int nod,int st, int dr) {
int qs=-1,qd=-1;
if (a<=st && b>=dr)
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);
}
void update (int nod, int st, int dr) {
if (st==dr && st==poz) {
v[nod]=b;
return;
}
int mid=(st+dr)>>1;
if (poz<=mid)
update(nod<<1,st,mid);
else
if (poz>mid)
update((nod<<1)+1,mid+1,dr);
v[nod]=max(v[nod<<1],v[(nod<<1)+1]);
}
int main () {
register int i;
fin>>n>>q;
for (i=1;i<=n;i++) {
fin>>x;
poz=i;
b=x;
update(1,1,n);
}
while (q--) {
fin>>x>>a>>b;
if (x==0)
fout<<query(1,1,n)<<"\n";
else{
poz=a;
update(1,1,n);
}
}
return 0;
}