Pagini recente » Cod sursa (job #846236) | Cod sursa (job #1088653) | Cod sursa (job #1370316) | Cod sursa (job #1589748) | Cod sursa (job #1443059)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,m,a,b,k,x[(1<<18)+5],c,Max(int,int,int),i;
int main()
{
f>>n>>m;
for(k=1;;k*=2)if(k>=n)break;
for(i=1;i<=n;i++)
f>>x[k-1+i];
for(i=k;i>=1;i--)
x[i]=max(x[2*i],x[2*i+1]);
for(;m;m--)
{
f>>c>>a>>b;
if(c==0)
g<<Max(1,n,1)<<'\n';
else
{
x[k-1+a]=b;
for(i=(k-1+a)/2;i;i/=2)
x[i]=max(x[2*i],x[2*i+1]);
}
}
return 0;
}
int Max(int l,int r,int N)
{
if(a<=l&& r<=b)return x[N];
if(r<a || l>b) return 0;
return max(Max(l,(l+r)/2,2*N),Max((l+r)/2+1,r,2*N+1));
}