Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- struct Node{
- long long key, l, r, add;
- };
- vector <Node> tree(1e6);
- vector <long long> a(1e6);
- long long inf = 1e18;
- void build(long long ind, long long l, long long r){
- tree[ind].l = l;
- tree[ind].r = r;
- if (r - l == 1){
- tree[ind].add = 0;
- tree[ind].key = a[l];
- return;
- }
- long long m = (l + r) / 2;
- build(2 * ind, l, m);
- build(2 * ind + 1, m, r);
- tree[ind].key = max(tree[2 * ind].key, tree[2 * ind + 1].key);
- }
- void push(long long ind){
- tree[ind].key += tree[ind].add;
- tree[2 * ind].add += tree[ind].add;
- tree[2 * ind + 1].add += tree[ind].add;
- tree[ind].add = 0;
- }
- void update(long long ind, long long l, long long r, long long add){
- if (l <= tree[ind].l && tree[ind].r <= r){
- tree[ind].add += add;
- return;
- }
- else if(l >= tree[ind].r || r <= tree[ind].l){
- return;
- }
- push(ind);
- update(2 * ind, l, r, add);
- update(2 * ind + 1, l, r, add);
- }
- long long search(long long ind, long long l, long long r){
- if (tree[ind].add != 0){
- push(ind);
- }
- if (l <= tree[ind].l && tree[ind].r <= r){
- return tree[ind].key + tree[ind].add;
- }
- else if(tree[ind].l >= r || tree[ind].r <= l){
- return -inf;
- }
- else{
- return max(search(2 * ind, l, r), search(2 * ind + 1, l, r));
- }
- }
- int main() {
- long long n, m, l, r, number;
- cin >> n;
- char s;
- for (long long i = 1; i < n + 1; i++){
- cin >> a[i];
- }
- build(1, 1, n + 1);
- cin >> m;
- for (long long i = 0; i < m; i++){
- cin >> s >> l >> r;
- if (s == 'a') {
- cin >> number;
- update(1, l, r + 1, number);
- for (long long i = 1; i < 4 * n; i++){
- cout << tree[i].key << ' ' << tree[i].l << ' ' << tree[i].r << '\n';
- }
- } else {
- cout << search(1, l, r + 1) << ' ';
- for (long long i = 1; i < 4 * n; i++){
- cout << tree[i].key << ' ' << tree[i].l << ' ' << tree[i].r << '\n';
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement