Pagini recente » Cod sursa (job #1904308) | Cod sursa (job #2391754) | Cod sursa (job #2510551) | Cod sursa (job #759142) | Cod sursa (job #2906383)
#include <fstream>
using namespace std;
ifstream in("arbint.in");
ofstream out("arbint.out");
int n,m,x,aib[200005],i,a,b,cer;
void upd(int x,int val)
{
aib[a+n]=x;
for (int i=a+n;i>1;i/=2) aib[i/2]=max(aib[i],aib[i^1]);
}
int query(int a,int b)
{
int ras=0;
for (a+=n,b+=n;a<b;a/=2,b/=2)
{
if (a&1) ras=max(ras,aib[a++]);
if (b&1) ras=max(ras,aib[--b]);
}
return ras;
}
int main()
{
in>>n>>m;
for (i=0;i<n;++i)
{
in>>x;
aib[i+n]=x;
}
for (i=n-1;i>0;--i) aib[i]=max(aib[i*2],aib[i*2+1]);
for (i=0;i<m;++i)
{
in>>cer>>a>>b;
a--;
if (cer==1) upd(a,b);
else out<<query(a,b)<<'\n';
}
return 0;
}