Pagini recente » Cod sursa (job #257952) | Cod sursa (job #1602948) | Cod sursa (job #1350246) | Cod sursa (job #593138) | Cod sursa (job #2676714)
#include "bits/stdc++.h"
using namespace std;
int main()
{
ifstream cin("arbint.in");
ofstream cout("arbint.out");
int n, m;
cin >> n >> m;
vector<int> v(n);
vector<int> ab(ceil(n / 100.0));
for(int i = 0; i < n; i++) {
cin >> v[i];
int k = i / 100;
if(ab[k] < v[i]) {
ab[k] = v[i];
}
}
for ( int i = 0 ; i < m; i++) {
int s = -1;
int o, a, b;
cin >> o >> a >> b;
if (o == 1) {
v[a - 1] = b;
int p = (a - 1) / 100;
ab[p] = 0;
for (int r = 100 * p; r < (p * 100) + 100 && r < ab.size(); r++) {
if ( ab[p] < v[r]) {
ab[p] = v[r];
}
}
}
else {
if((a - 1) / 100 == (b - 1) / 100) {
for(int e = a - 1; e < b; e++) {
if(s < v[e]) {
s = v[e];
}
}
}
else {
int q = (a - 1) / 100;
int q1 = (b - 1) / 100;
if ((a - 1) % 100 != 0) {
q++;
}
if ((b - 1) % 100 == 99) {
q1++;
}
if(q != q1) {
for(int e = q; e < q1; e++) {
if(s < ab[e]) {
s = ab[e];
}
}
}
while ((a - 1) % 100 > 0) {
if (s < v[a - 1]) {
s = v[a - 1];
}
a++;
}
while((b - 1) % 100 >= 0 && (b - 1) % 100 != 99) {
if (s < v[b - 1]) {
s = v[ b - 1];
}
b--;
}
}
cout << s << '\n';
}
}
return 0;
}