Pagini recente » Cod sursa (job #2380811) | Cod sursa (job #3323471) | Cod sursa (job #1467704) | Cod sursa (job #2380794) | Cod sursa (job #3041393)
#include <bits/stdc++.h>
#define L long long
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int n,m,x,y,ma,a[500005];
bool k;
void u(int nod, int st, int dr)
{
if(st==dr)
{
a[nod]=y;
return;
}
int m=(st+dr)/2;
if (x<=m)
u(2*nod,st,m);
else
u(2*nod+1,m+1,dr);
a[nod]=max(a[2*nod],a[2*nod+1]);
}
void q(int nod, int st, int dr)
{
if (x<=st && dr<=y)
{
ma=max(ma,a[nod]);
return;
}
int m=(st+dr)/2;
if (x<=m) q(2*nod,st,m);
if (m<y) q(2*nod+1,m+1,dr);
}
int main()
{
in>>n>>m;
for(int i=1; i<=n; ++i)
in>>y,x=i,u(1,1,n);
for(int i=1; i<=m; ++i)
{
in>>k>>x>>y;
if(k==0)
ma=-1,q(1,1,n),out<<ma<<'\n';
else
u(1,1,n);
}
}