Pagini recente » Cod sursa (job #2069645) | Cod sursa (job #1687988) | Cod sursa (job #1298181) | Cod sursa (job #1544463) | Cod sursa (job #2674956)
#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;
int mx = -1;
for(int i = 0; i < n; i++) {
cin >> v[i];
if(i % 100 != 0 || i == 0) {
if(mx < v[i]) {
mx = v[i];
}
}
else {
ab.push_back(mx);
mx = -1;
}
if (mx != -1 && i == (n - 1)) {
ab.push_back(mx);
}
}
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;
if ( p != 0 && p != ab.size()) {
for (int r = 100 * p; r < (p * 100) + 100; r++) {
if ( ab[p] < v[r]) {
ab[p] = v[r];
}
}
}
if (p == 0) {
for (int r = 0; r < 100; r++) {
if ( ab[p] < v[r]) {
ab[p] = v[r];
}
}
}
if ( p == ab.size()) {
for (int r = 100 * p; 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;
}