Pagini recente » Cod sursa (job #1587185) | Cod sursa (job #2647345) | Cod sursa (job #2699165) | Cod sursa (job #2303535)
#include <bits/stdc++.h>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int nr1,nr2,mx,ar[400005];
void upd(int nr,int l,int r)
{
if(l==r)
{
ar[nr]=nr2;
return;
}
int mid=(l+r)/2;
if(nr1<=mid)
upd(2*nr,l,mid);
else
upd(2*nr+1,mid+1,r);
ar[nr]=max(ar[2*nr],ar[2*nr+1]);
}
void q(int nr,int l,int r)
{
if(nr1<=l&&nr2>=r)
{
mx=max(mx,ar[nr]);
return;
}
int mid=(l+r)/2;
if(nr1<=mid)
q(2*nr,l,mid);
if(nr2>mid)
q(2*nr+1,mid+1,r);
}
int main()
{
int n,m,i;
in>>n>>m;
for(i=1;i<=n;i++)
{
in>>nr2;
nr1=i;
upd(1,1,n);
}
while(m--)
{
in>>i>>nr1>>nr2;
if(i==0)
{
mx=-1;
q(1,1,n);
out<<mx<<"\n";
}
else
upd(1,1,n);
}
return 0;
}