Pagini recente » Cod sursa (job #2703480) | Cod sursa (job #1850529) | Istoria paginii runda/ret2 | Profil bentearoxana | Cod sursa (job #1424656)
#include <fstream>
using namespace std;
ifstream fin("1.in");
ofstream fout("1.out");
int n,m,arb[400010],poz,i,cod,Max,a,b;
void update(int nod, int st, int dr)
{
if (st==dr)
{
arb[nod]=b;
return;
}
int mid=(st+dr)/2;
if (poz<=mid)
update(2*nod,st,mid);
if(poz>mid)
update(2*nod+1,mid+1,dr);
arb[nod]=max(arb[2*nod],arb[2*nod+1]);
}
void query(int nod,int st,int dr){
if(st>=a&&dr<=b)
{
Max=max(Max,arb[nod]);
return;
}
int mid=(st+dr)/2;
if(a<=mid)
query(2*nod,st,mid);
if(b>mid)
query(2*nod+1,mid+1,dr);
}
int main()
{
fin>>n>>m;
for (i=1;i<=n;i++)
{
fin>>b;
poz=i;
update(1,1,n);
}
for(i=1;i<=m;i++){
fin>>cod>>a>>b;
if(cod==0){
Max=0;
query(1,1,n);
fout<<Max<<'\n';
continue;
}
poz=a;
update(1,1,n) ;
}
return 0;
}