Pagini recente » Cod sursa (job #1809896) | Cod sursa (job #2929428) | Cod sursa (job #2751212) | Cod sursa (job #1305799) | Cod sursa (job #2052134)
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n,m,a[100001],z,x,y,b[1000],rad,maxi;
int main()
{ fin>>n>>m;int i,j;
for(i=0;i<n;i++)
fin>>a[i];
rad=int(sqrt(n));
for(i=0;i<=n;i++)
if(a[i]>b[i/rad]) b[i/rad]=a[i];
for(i=1;i<=m;i++)
{fin>>x>>y>>z;
if(x==1) {y--;
a[y]=z;b[y/rad]=0;
//if(a[y]>b[y/rad]) b[y/rad]=a[y];
for(j=y/rad*rad;j<=y/rad*rad+rad-1;j++)
if(a[j]>b[y/rad]) b[y/rad]=a[j];
}
else
{ y--;
z--;
maxi=0;
for(j=y/rad+1;j<=z/rad-1;j++)
if(b[j]>maxi) maxi=b[j];
for(j=y;j/rad==y/rad;j++)
if(a[j]>maxi) maxi=a[j];
for(j=z;j/rad==z/rad;j--)
if(a[j]>maxi) maxi=a[j];
fout<<maxi<<"\n";
}
}
return 0;
}