Pagini recente » Cod sursa (job #185648) | Cod sursa (job #84739) | Cod sursa (job #1515804) | Cod sursa (job #2810425) | Cod sursa (job #2099787)
#include <iostream>
#include <fstream>
#define mx 100005
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int AIMax[2*mx], n, m, pos, val, x, y, Max;
void Update(int node, int lt, int rt)
{
if(lt == rt)
{
AIMax[node] = val;
return;
}
int mid = (lt + rt)/2;
if(pos <= mid) Update (2*node, lt, mid);
else Update(2*node+1, mid+1, rt);
AIMax[node] = max(AIMax[2*node], AIMax[2*node+1]);
}
void Query(int node, int lt, int rt)
{
if(x <= lt && rt <= y)
{
Max = max(Max, AIMax[node]);
return;
}
int mid = (lt + rt)/2;
if(x <= mid) Query(2*node, lt, mid);
if(mid < y) Query(2*node+1, mid+1, rt);
}
int main()
{
f >> n >> m;
for(int i = 1; i <= n; ++i)
{
pos = i;
f >> val;
Update(1, 1, n);
}
for(int i = 1; i <= m; ++i)
{
int k;
f >> k;
if(k)
{
f >> pos >> val;
Update(1, 1, n);
}
else
{
Max = -1;
f >> x >> y;
Query(1, 1, n);
g << Max << "\n";
}
}
}