Pagini recente » Cod sursa (job #737772) | Cod sursa (job #2460765) | Cod sursa (job #3250723) | Cod sursa (job #2870808) | Cod sursa (job #1415304)
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,m,c,i,a[100001],st[100001],dr[100001],l,j,MAX[100001],t,x,y,ans,z;
int main()
{
f>>n>>m;
c=sqrt(n);
for (i=1;i<=n;i++)
f>>a[i];
for (i=1;i<=n;i+=c)
st[++l]=i,dr[l]=min(i+c-1,n);
for (i=1;i<=l;i++)
{
for (j=st[i];j<=dr[i];j++)
if (MAX[i]<a[j])
MAX[i]=a[j];
}
for (i=1;i<=m;i++)
{
f>>t>>x>>y;
if (t==0)
{
ans=0;
for (j=1;j<=l;j++)
if (st[j]<=x && x<=dr[j])
{
for (z=x;z<=dr[j];z++)
if (ans<a[z])
ans=a[z];
}
else if (x<st[j])
{
if (dr[j]<y){
if (ans<MAX[j])
ans=MAX[j];
}
else if (st[j]<=y && y<=dr[j])
{
for (z=st[j];z<=y;z++)
if (ans<a[z])
ans=a[z];
}
}
g<<ans<<'\n';
}
else
{
a[x]=y;
for (j=1;j<=l;j++){
if (st[j]<=x && x<=dr[j])
{
MAX[j]=0;
for (z=st[j];z<=dr[j];z++)
if (MAX[j]<a[z])
MAX[j]=a[z];
}
}
}
}
return 0;
}