Pagini recente » Cod sursa (job #1833020) | Cod sursa (job #1481528) | Cod sursa (job #1271982) | Cod sursa (job #2557791) | Cod sursa (job #2482420)
#include <bits/stdc++.h>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int n,m;
int x[400001];
int val,pos;
int a,b;
void build(int nod, int left , int right)
{
if(left==right)
{
x[nod]=val;
return;
}
else
{
int m=(left+right)/2;
if(pos <= m)
build(2*nod,left,m);
else
build(2*nod+1,m+1,right);
x[nod]=max(x[2*nod],x[2*nod+1]);
}
}
int maxim;
void query(int nod ,int left, int right)
{
// cout<<"crapa";
if(a <= left and right <= b)
{
maxim=max(maxim,x[nod]);
return;
}
int m=(left+right)/2;
if(a <= m) query(2*nod,left,m);
if(m < b) query(2*nod+1,m+1,right);
}
int main()
{
f>>n>>m;
int i;
for(i=1;i<=n;i++)
{
f>>val;
pos=i;
build(1,1,n);
}
//pana aici bun
for(i=1;i<=m;i++)
{
int type;
f>>type;
// cout<<type<<' ';
if(type==0)
{
maxim=-2;
f>>a>>b;
query(1,1,n);
g<<maxim<<'\n';
}
else
{
f>>pos>>val;
build(1,1,n);
}
}
return 0;
}