Pagini recente » Cod sursa (job #1353971) | Cod sursa (job #2853684) | Cod sursa (job #2283386) | Cod sursa (job #129919) | Cod sursa (job #642003)
Cod sursa(job #642003)
#include <fstream>
#define TSize 262145
#define max(a,b) (a<b?b:a)
using namespace std;
ifstream in;
ofstream out;
int T[TSize];
int pos,val;
int a,b;
inline void update(int nod,int L,int R)
{
if(L==pos&&pos==R)
{
T[nod]=val;
return;
}
int M=(L+R)>>1;
if(pos<=M) update(nod<<1,L,M);
else update((nod<<1)+1,M+1,R);
T[nod]=max(T[nod<<1],T[(nod<<1)+1]);
}
inline int query(int nod,int L,int R)
{
if(a<=L&&R<=b) return T[nod];
int M=(L+R)>>1;
int x1=0,x2=0;
if(a<=M) x1=query(nod<<1,L,M);
if(b>M) x2=query((nod<<1)+1,M+1,R);
return max(x1,x2);
}
int main()
{
int M,N,x;
in.open("arbint.in");
in>>N>>M;
for(pos=1;pos<=N;++pos)
{
in>>val;
update(1,1,N);
}
out.open("arbint.out");
for(;M--;)
{
in>>x;
if(x)
{
in>>pos>>val;
update(1,1,N);
}
else
{
in>>a>>b;
out<<query(1,1,N)<<'\n';
}
}
in.close();
out.close();
}