Pagini recente » Cod sursa (job #1227163) | Cod sursa (job #1616763) | Cod sursa (job #2937227) | Cod sursa (job #1224886) | Cod sursa (job #2089768)
#include <fstream>
using namespace std;
#define N 100100
int v[2*N],i,n,j,m,x,y,t;
inline int operatie(int a,int b)
{
if(a>b)return a;
return b;
}
inline void build()
{
for(i=n-1;i>0;--i)
v[i]=operatie(v[i<<1],v[i<<1|1]);
}
inline void update(int p,int x)
{
v[p+n]=x;
for(p=(p+n)>>1;p>0;p>>=1)
v[p]=operatie(v[p<<1],v[p<<1|1]);
}
inline int query(int l,int r)
{
int ans=0;
for(l+=n,r+=n;l<r;l>>=1,r>>=1)
{
if(l&1)ans=operatie(ans,v[l++]);
if(r&1)ans=operatie(ans,v[--r]);
}
return ans;
}
int main()
{
ifstream fin("arbint.in");
ofstream fout("arbint.out");
fin>>n>>m;
for(i=0;i<n;++i)fin>>v[i+n];
build();
for(i=0;i<m;++i)
{
fin>>t>>x>>y;
if(!t)fout<<query(x-1,y)<<'\n';
else update(x-1,y);
}
return 0;
}