Pagini recente » Cod sursa (job #1063461) | Cod sursa (job #2649194) | Cod sursa (job #772325) | Cod sursa (job #264689) | Cod sursa (job #1798332)
#include <fstream>
using namespace std;
ifstream f("arbint.in");
ofstream g("arbint.out");
int aint[270000], n, m, z, i, j, x, y, cod, query(int, int, int);
int main()
{
f >> n >> m;
for(z = 1; z <= n; z *= 2);
for(i = 1, j = z; i <= n; i++, j++)
f >> aint[j];
for(i = z-1; i >= 1; i--)
aint[i] = max(aint[2*i], aint[2*i+1]);
for(; m; m--) {
f >> cod >> x >> y;
if(cod) {
i = z-1+x;
aint[i] = y;
for(i /= 2; i; i /= 2) aint[i] = max(aint[2*i], aint[2*i+1]);
} else g << query(1, 1, z) << '\n';
}
return 0;
}
int query(int p, int lo, int hi) {
if(lo > y || x > hi)
return 0;
if(x <= lo && hi <= y)
return aint[p];
int mi = (lo+hi) / 2;
return max(query(2*p, lo, mi), query(2*p+1, mi+1, hi));
}