Pagini recente » Cod sursa (job #827914) | Cod sursa (job #1871683) | Cod sursa (job #1684705) | Cod sursa (job #448945) | Cod sursa (job #1152053)
#include <fstream>
#include <cstdio>
using namespace std;
//ifstream fin ("arbint.in");
ofstream fout ("arbint.out");
int n,m,x,v[1000005];
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 fiu=(nod<<1);
int mid=(st+dr)>>1;
if (a<=mid)
qs=query(fiu,st,mid);
if (b>mid)
qd=query((fiu)+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 fiu=(nod<<1);
int mid=(st+dr)>>1;
if (poz<=mid)
update(fiu,st,mid);
else
if (poz>mid)
update(fiu+1,mid+1,dr);
v[nod]=max(v[fiu],v[fiu+1]);
}
int main () {
register int i;
freopen("arbint.in","r",stdin);
//fin>>n>>q;
scanf("%d%d",&n,&q);
for (i=1;i<=n;i++) {
//fin>>x;
scanf("%d",&x);
poz=i;
b=x;
update(1,1,n);
}
while (q--) {
//fin>>x>>a>>b;
scanf("%d%d%d",&x,&a,&b);
if (x==0)
fout<<query(1,1,n)<<"\n";
else{
poz=a;
update(1,1,n);
}
}
return 0;
}