Pagini recente » Cod sursa (job #2732214) | Cod sursa (job #1798940) | Cod sursa (job #2698056) | Cod sursa (job #2022260) | Cod sursa (job #2109989)
#include <iostream>
#include <fstream>
using namespace std;
ifstream F("arbint.in");
ofstream g("arbint.out");
int v[5000000],n,m,x,pos,val,s,f,mx;
int maxi(int a,int b)
{
if(a>b) return a;
else return b;
}
void update(int nod,int l,int r)
{
int m;
if(l==r) v[nod]=val;
else
{
m=(l+r)/2;
if(pos<=m) update(2*nod,l,m);
else update(2*nod+1,m+1,r);
v[nod]=maxi(v[2*nod],v[2*nod+1]);
}
}
int queery(int nod,int l,int r)
{
int m,x1=0,x2=0;
if(s<=l && r<=f) return v[nod];
else
{
m=(l+r)/2;
if(s<=m) x1=queery(2*nod,l,m);
if(m<f) x2=queery(2*nod+1,m+1,r);
return maxi(x1,x2);
}
}
int main()
{F>>n>>m;
int a,b,i;
for(i=1;i<=n;i++)
{
F>>x;
pos=i;val=x;
update(1,1,n);
}
for(i=1;i<=m;i++)
{
F>>x>>a>>b;
if(x==0)
{s=a;f=b;
g<<queery(1,1,n)<<endl;
}
else
{
pos=a;val=b;
update(1,1,n);
}
}
return 0;
}