Pagini recente » Cod sursa (job #2066158) | Cod sursa (job #1153245) | Cod sursa (job #2492758) | Cod sursa (job #2940580) | Cod sursa (job #2575137)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
const int DIM = 100005;
int Arb[DIM*4+2],n,q,event,a,b,x,val,pos,ans,st,fn;
void Update(int node, int st, int dr)
{
if(st==dr)
{
Arb[node]=val;
return;
}
int mij=(st+dr)/2;
if(pos<=mij)
Update(2*node,st,mij);
else
Update(2*node+1,mij+1,dr);
Arb[node]=max(Arb[2*node],Arb[2*node+1]);
}
void Query(int nod, int left, int right)
{
if(st<=left && right<=fn)
{
ans=max(ans,Arb[nod]);
return;
}
int div=(left+right)/2;
if(st<=div)
Query(2*nod,left,div);
if(div<fn)
Query(2*nod+1,div+1,right);
}
void Read()
{
fin>>n>>q;
for(int i=1;i<=n;i++)
{
fin>>x;
val=x;
pos=i;
Update(1,1,n);
}
}
void Query()
{
for(int i=1;i<=q;i++)
{
fin>>event>>a>>b;
switch(event)
{
case 0:
{
ans=0;
st=a;
fn=b;
Query(1,1,n);
fout<<ans<<'\n';
break;
}
default:
{
pos=a;
val=b;
Update(1,1,n);
break;
}
}
}
}
int main()
{
Read();
Query();
}