Pagini recente » Cod sursa (job #2149645) | Cod sursa (job #2785941) | Cod sursa (job #1167262) | Cod sursa (job #1237858) | Cod sursa (job #1081568)
#include <fstream>
#define B(x) x&1?x-1:x+1
using namespace std;
int n,m,ai[262144],o,pos,val,s,e,mx;
void Query(int nod,int l,int r)
{
if(s<=l&&r<=e)
{
if(ai[nod]>mx)
mx=ai[nod];
return;
}
int m=(l+r)>>1;
if(s<=m)
Query(nod<<1,l,m);
if(m<e)
Query((nod<<1)+1,m+1,r);
}
void Update(int nod,int l,int r)
{
if(l==r)
{
ai[nod]=val;
return;
}
int m=(l+r)>>1,ls=nod<<1,rs=ls+1;
if(pos<=m)
Update(ls,l,m);
else
Update(rs,m+1,r);
ai[nod]=max(ai[ls],ai[rs]);
}
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int main()
{
fin>>n>>m;
for(pos=1;pos<=n;pos++)
{
fin>>val;
Update(1,1,n);
}
while(m--)
{
fin>>o;
if(o)
{
fin>>pos>>val;
Update(1,1,n);
}
else
{
fin>>s>>e;
mx=-1;
Query(1,1,n);
fout<<mx<<"\n";
}
}
return 0;
}