Submission #1348471

#TimeUsernameProblemLanguageResultExecution timeMemory
1348471po_rag526Toy (CEOI24_toy)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MAX = 1e6 + 5;
int n, m, arr[MAX], tree[MAX * 4], lazy[4 * MAX];
bool mark[4 * MAX];
void build(int node, int l, int r) {
    if(l == r) {
        tree[node] = arr[l];
        return;
    }
    int m = (l + r) / 2;
    build(2 * node, l, m);
    build(2 * node + 1, m + 1, r);
    tree[node] = tree[2 * node] + tree[2 * node + 1];
}
void relax(int node, int l, int r) {
    tree[node] = lazy[node];
    if(l != r) {
        if((r - l + 1) % 2 == 0) {
            lazy[2 * node] = (lazy[node] - (((r - l + 1) / 2) * ((r - l + 1) / 2))) / 2;
            lazy[2 * node + 1] = (lazy[node] - (((r - l + 1) / 2) * ((r - l + 1) / 2))) / 2 + (((r - l + 1) / 2) * ((r - l + 1) / 2));
        }
        else {
            
        }
    }
    lazy[node] = -1;
}
void update(int node, int l, int r, int ql, int qr) {
    if(lazy[node] != -1) {
        relax(node, l, r);
    }
    if(l > qr || r < ql) return;
    if(ql <= l && r <= qr) {
        int e = l - ql, f = r - ql + 1;
        lazy[node] = f * (f + 1) - e * (e + 1) / 2;
        relax(node, l, r);
        return;
    }
    int m = (l + r) / 2;
    update(2 * node, l, m, ql, qr, val);
    update(2 * node + 1, m + 1, r, ql, qr, val);
    tree[node] = tree[node * 2] + tree[node * 2 + 1];
}
int query(int node, int l, int r, int ql, int qr) {
    if(lazy[node] != -1) {
        relax(node, l, r);
    }
    if(l > qr || r < ql) return 0;
    if(ql <= l && r <= qr) return tree[node];
    int m = (l + r) / 2;
    int a = query(2 * node, l, m, ql, qr);
    int b = query(2 * node + 1, m + 1, r, ql, qr);
    return a + b;
}
void solve() {
    memset(lazy, -1, sizeof(lazy));
    cin >> n >> m;
    while(m--) {
        char t;
        int l, r, x;
        cin >> t;
        if(t == 'A') {
            cin >> l >> r >> x;
            update(1, 1, n, l, r, x);
        }
        else {
            cin >> l >> r;
            cout << query(1, 1, n, l, r) << endl;
        }
    }
//}
signed main() {
    int t = 1;
    //cin >> t;
    while (t--) {
        solve();
    }
}

Compilation message (stderr)

Main.cpp: In function 'void update(long long int, long long int, long long int, long long int, long long int)':
Main.cpp:42:36: error: 'val' was not declared in this scope
   42 |     update(2 * node, l, m, ql, qr, val);
      |                                    ^~~
Main.cpp: In function 'void solve()':
Main.cpp:66:19: error: too many arguments to function 'void update(long long int, long long int, long long int, long long int, long long int)'
   66 |             update(1, 1, n, l, r, x);
      |             ~~~~~~^~~~~~~~~~~~~~~~~~
Main.cpp:30:6: note: declared here
   30 | void update(int node, int l, int r, int ql, int qr) {
      |      ^~~~~~
Main.cpp:74:12: warning: empty parentheses were disambiguated as a function declaration [-Wvexing-parse]
   74 | signed main() {
      |            ^~
Main.cpp:74:12: note: remove parentheses to default-initialize a variable
   74 | signed main() {
      |            ^~
      |            --
Main.cpp:74:12: note: or replace parentheses with braces to value-initialize a variable
Main.cpp:74:15: error: a function-definition is not allowed here before '{' token
   74 | signed main() {
      |               ^
Main.cpp:80:2: error: expected '}' at end of input
   80 | }
      |  ^
Main.cpp:57:14: note: to match this '{'
   57 | void solve() {
      |              ^