Pagini recente » Cod sursa (job #1107363) | Cod sursa (job #12578) | Cod sursa (job #618581) | Cod sursa (job #437336) | Cod sursa (job #1152127)
#include <fstream>
#include <cstdio>
using namespace std;
ifstream fin ("arbint.in");
ofstream fout ("arbint.out");
int n,m,x,v[400005];
int a,b,q, poz;
inline int max (int a,int b) {
if (a>b)
return a;
return b;
}
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) {
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;
}