Pagini recente » Cod sursa (job #2907288) | Cod sursa (job #18916) | Cod sursa (job #1156942) | Cod sursa (job #1547862) | Cod sursa (job #2679678)
#include <fstream>
#define fisier "arbint"
std::ifstream in(fisier ".in");
std::ofstream out(fisier ".out");
constexpr int log(int e)
{return e? log(e >> 1) + 1: 0;}
int V[1 << log(100000) + 1];
int main()
{
int n, m, l; in >> n >> m; l = (1 << log(n)) - 1;
for (int i = 1; i <= n; i++) in >> V[l + i];
for (int i = l + n + 1; i; i--) if (i & 1)
V[i >> 1] = std::max(V[i], V[i - 1]);
while (m--)
{
bool v; int a, b; in >> v >> a >> b;
if (v) for (V[a += l] = b; a >>= 1;)
V[a] = std::max(V[a << 1], V[(a << 1) + 1]);
else
{
int max = 0;
for (a += l, b += l; a <= b; a >>= 1, b >>= 1)
{
if (a & 1) max = std::max(max, V[a++]);
if (!(b & 1)) max = std::max(max, V[b--]);
}
out << max << '\n';
}
}
}