Pagini recente » Cod sursa (job #3273622) | Cod sursa (job #1678785) | Cod sursa (job #2281394) | Cod sursa (job #1700369) | Cod sursa (job #856296)
Cod sursa(job #856296)
#include<fstream>
#include<cmath>
#define NMAX 100002
#define radical 333
using namespace std;
int b[radical],a[NMAX];
int n,m;
int rad;
ifstream in("arbint.in");
ofstream out("arbint.out");
void scan()
{
in>>n>>m;
rad=sqrt(n);
for (int i = 0; i<n;++i)
{
in>>a[i];
if (b[i/rad]<a[i])
b[i/rad]=a[i];
}
}
void operatii()
{
int x,y,z;
int begin,end;
int mx;
for (int i=1;i<=m;++i)
{
in>>z>>x>>y;
if (z==0)
{
if ((x-1)%rad==0)
begin=(x-1)/rad;
else begin=(x-1)/rad+1;
if ((y)%rad==0)
end=(y-1)/rad;
else end=(y-1)/rad-1;
mx=0;
for (int j=begin;j<=end;++j)
if (b[j]>mx) mx=b[j];
for (int j=x-1;j<begin*rad;++j)
if (a[j]>mx) mx=a[j];
for (int j=(end+1)*rad;j<y;++j)
if (a[j]>mx) mx=a[j];
out<<mx<<"\n";
}
else
{
int k;
k=(x-1)/rad;
a[x-1]=y;
mx=0;
for (int j=k*rad;j<=(k+1)*rad-1;++j)
{
if (a[j]>mx)
mx=a[j];
}
b[k]=mx;
}
}
}
int main()
{
scan();
operatii();
return 0;
}