Submission #1224623

#TimeUsernameProblemLanguageResultExecution timeMemory
1224623SpyrosAlivInside information (BOI21_servers)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

const int MN = 120005;
const int MQ = 120005;
int n, q;
vector<vector<int>> tree(MN);
vector<int> par(MN, 0), idx(MN, 0);

class segTree {
    vector<int> seg;
    int n;
    int query(int node, int start, int end, int l, int r) {
        if (start > r || end < l) return 0;
        else if (start >= l && end <= r) return seg[node];
        else {
            int mid = (start + mid) / 2;
            return query(node*2, start, mid, l, r) + query(node*2+1, mid+1, l, r);
        }
    }
    void update(int node, int start, int end, int idx, int v) {
        if (start == end) {
            seg[node] = v;
        }
        else {
            int mid = (start + end) / 2;
            if (idx <= mid) {
                update(node*2, start, mid, idx, v);
            }
            else update(node*2+1, mid+1, end, idx, v);
            seg[node] = seg[node*2] + seg[node*2+1];
        }
    }
    public:
    void init(int nn) {
        n = n;;
        seg.assign(n*4+10, 0);
    }
    int query(int l, int r) {
        return query(1, 1, n, l, r);
    }
    void update(int idx, int v) {
        update(1, 1, n, idx, v);
    }
};

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n >> q;
    segTree dec, inc;
    dec.init(n);
    inc.init(n);
    for (int i = 1; i <= n; i++) {
        dec.update(i, 1);
        inc.update(i, 1);
    }
    vector<int> vals(n+1, 0);
    for (int qq = 1; qq <= n + q - 1; qq++) {
        char s; cin >> s;
        if (s == 'Q') {
            int a, b; cin >> a >> b;
            if (a == b) {
                cout << "yes\n";
                continue;
            }
            int tot = 0;
            if (a > b) {
                tot = inc.query(b+1, a);
            }
            else tot = dec.query(a+1, b);
            if (tot) cout << "no\n";
            else cout << "yes\n";
        }
        else if (s == 'S') {
            int a, b; cin >> a >> b;
            vals[b] = qq;
            if (a > b) swap(a, b);
            if (vals[b-1] == 0) {
                dec.update(b, 0);
                inc.update(b, 0);
            }
            else {
                if (vals[b-1] < vals[b]) {
                    inc.update(b, 0);
                }
                else dec.update(b, 0);
            }
            if (b < n && vals[b+1] != 0) {
                if (vals[b] < vals[b+1]) {
                    inc.update(b+1, 0);
                }
                else dec.update(b+1, 0);
            }
        }
        else assert(false);
    }
}

Compilation message (stderr)

servers.cpp: In member function 'int segTree::query(int, int, int, int, int)':
servers.cpp:18:59: error: no matching function for call to 'segTree::query(int, int, int&, int&)'
   18 |             return query(node*2, start, mid, l, r) + query(node*2+1, mid+1, l, r);
      |                                                      ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
servers.cpp:13:9: note: candidate: 'int segTree::query(int, int, int, int, int)'
   13 |     int query(int node, int start, int end, int l, int r) {
      |         ^~~~~
servers.cpp:13:9: note:   candidate expects 5 arguments, 4 provided
servers.cpp:39:9: note: candidate: 'int segTree::query(int, int)'
   39 |     int query(int l, int r) {
      |         ^~~~~
servers.cpp:39:9: note:   candidate expects 2 arguments, 4 provided