Pagini recente » Cod sursa (job #1071687) | Cod sursa (job #3238368) | Cod sursa (job #2817315) | Cod sursa (job #1209850) | Cod sursa (job #1081575)
#include <fstream>
using namespace std;
int n,m,ai[262144],o,p1,p2,mx;
void Query(int nod,int l,int r)
{
if(p1<=l&&r<=p2)
{
if(ai[nod]>mx)
mx=ai[nod];
return;
}
int m=(l+r)>>1;
if(p1<=m)
Query(nod<<1,l,m);
if(m<p2)
Query((nod<<1)+1,m+1,r);
}
void Update(int nod,int l,int r)
{
if(l==r)
{
ai[nod]=p2;
return;
}
int m=(l+r)>>1,ls=nod<<1,rs=ls+1;
if(p1<=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(p1=1;p1<=n;p1++)
{
fin>>p2;
Update(1,1,n);
}
while(m--)
{
fin>>o>>p1>>p2;
if(o)
Update(1,1,n);
else
{
mx=0;
Query(1,1,n);
fout<<mx<<"\n";
}
}
return 0;
}