Pagini recente » Cod sursa (job #1739941) | Cod sursa (job #257434) | Cod sursa (job #2052632) | Cod sursa (job #1446574) | Cod sursa (job #1346279)
#include<fstream>
using namespace std;
ifstream fin("arbint.in");
ofstream fout("arbint.out");
int arb[100009], n, i, maxim, a1, b1, m, c, nr;
void update(int n, int l, int r){
if (l == r){
arb[n] = b1;
return;
}
int m = (l + r) / 2;
if (a1 <= m)
update(n * 2, l, m);
else
update(n * 2 + 1, m + 1, r);
arb[n] = max(arb[n * 2], arb[n * 2 + 1]);
}
void query(int n, int l, int r){
if (a1 <= l and b1 >= r)
if (maxim < arb[n])
maxim = arb[n];
if (a1 > r or b1 < l or arb[n] == 0)
return;
int m = (l + r) / 2;
query(n * 2, l, m);
query(n * 2 + 1, m + 1, r);
}
int main(){
fin >> n >> m;
for (i = 1; i <= n; i++){
//fin >> a[i];
fin >> nr;
a1 = i; b1 = nr;
update(1, 1, n);
}
//build(1, 1, n);
// for (i = 1; i <= 9; i++)
// fout << arb[i] << " ";
for (i = 1; i <= m; i++){
fin >> c;
if (c == 0){
fin >> a1 >> b1;
maxim = 0;
query(1, 1, n);
fout << maxim << '\n';
} else {
fin >> a1 >> b1;
update(1, 1, n);
}
}
}