Pagini recente » Cod sursa (job #2392516) | Cod sursa (job #2522916) | Cod sursa (job #611182) | Cod sursa (job #2878024) | Cod sursa (job #2244610)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int n, m, v[400060], pos, val, maxim, a, b;
void Update(int nod, int l, int r)
{
if(l == r)
{
v[nod] = val;
return;
}
int mid = (l+r)/2;
if( pos <= mid )
Update(2*nod, l, mid);
else
Update(2*nod+1, mid+1, r);
v[nod] = max(v[2*nod], v[2*nod+1]);
}
void Querry(int nod, int l, int r)
{
if(a <= l && b >= r)
{
maxim = max(v[nod],maxim);
}
else
{
int mid= (l+r)/2;
if(a <= mid) Querry(2*nod, l, mid);
if(mid < b) Querry(2*nod+1, mid+1, r);
}
}
int main()
{
fin >> n >> m;
for(int i = 1; i <= n; i++)
{
int x;
fin >> x;
pos = i, val = x;
Update(1,1,n);
}
for(int i = 1; i <= m; i++)
{
int x, y, z;
fin >> x >> y >> z;
if(x == 0)
{
maxim = -100000;
a = y;
b = z;
Querry(1, 1, n);
fout << maxim << '\n';
}
else
{
pos = y;
val = z;
Update(1, 1, n);
}
}
return 0;
}