Pagini recente » Cod sursa (job #3331753) | Cod sursa (job #3313204) | Cod sursa (job #1049351) | Cod sursa (job #1923273) | Cod sursa (job #3323838)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
const int lim=1e5+10;
int n,t,q,i,s[4*lim],x,val;
void update(int x,int val)
{
x+=n;
s[x]=val;
x/=2;
while(x)
{
s[x]=max(s[2*x],s[2*x+1]);
x/=2;
}
}
int query(int l, int r)
{
l+=n;
r+=n;
int mx=0;
while(l<=r)
{
if(l%2==1)mx=max(mx,s[l]);
if(r%2==0)mx=max(mx,s[r]);
l=(l+1)/2;
r=(r-1)/2;
}
return mx;
}
void task()
{
fin>>t;
if(t==0)
{
int x,y;
fin>>x>>y;
fout<<query(x-1,y-1)<<'\n';
}
else
{
fin>>x>>val;
update(x-1,val);
}
}
int main()
{
fin>>n>>q;
for(i=1;i<=n;i++)
{
fin>>x;
update(i-1,x);
}
while(q--)
{
task();
}
return 0;
}