Pagini recente » Cod sursa (job #1910504) | Cod sursa (job #1965973) | Cod sursa (job #1743881) | Cod sursa (job #2940117) | Cod sursa (job #945713)
Cod sursa(job #945713)
#include <fstream>
using namespace std;
ifstream fi("arbint.in");
#define nmax 300000
int op,st,dr,x,n,m,i,t[nmax];
inline int max(int a, int b){
if (a>b) return a; return b;
}
inline void add(int nod,int st,int dr){
if (st==dr) t[nod]=x; else{
int mid=(st+dr)/2;
if (i<=mid) add(nod*2,st,mid);
else add(nod*2+1,mid+1,dr);
t[nod]=max(t[nod*2],t[nod*2+1]);
}
}
inline int get(int nod,int st,int dr){
if (i<=st && x>=dr) return t[nod]; else{
int mid=(st+dr)/2,r1=0,r2=0;
if (i<=mid) r1=get(nod*2,st,mid);
if (x>mid) r2=get(nod*2+1,mid+1,dr);
return max(r1,r2);
}
}
int main(){
freopen("arbint.out","w",stdout);
fi >> n >> m;
for (i=1; i<=n; i++){
fi >> x;
add(1,1,n);
}
while (m--){
fi >> op >> i >> x;
if (op) add(1,1,n);
else printf("%d\n",get(1,1,n));
}
return 0;
}