QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#534053#62. ExaminationisirazeevCompile Error//C++172.6kb2024-08-26 20:05:132024-08-26 20:05:13

Judging History

你现在查看的是最新测评结果

  • [2024-08-26 20:05:13]
  • 评测
  • [2024-08-26 20:05:13]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;
#define int long long

const int N = (int) 1e5 * 2 + 10;

struct Node {
    int a, b, c, ind, cost;
};

struct BIT {
    vector<int> f;
    int N;

    void init(int n) {
        N = n + 2;
        f.resize(n + 2, 0);
    }

    void update(int i, int val) {
        for (; i < N; i += (i & (-i)))
            f[i] += val;
    }

    int sum(int r) {
        int res = 0;
        for (; r > 0; r -= (r & (-r)))
            res += f[r];
        return res;
    }
};

vector<Node> v;
int ans[N];

BIT bit;

void DivideAndConquer(int l, int r) {
    if (l == r) return;
    int mid = (l + r) / 2, a = l, b = mid + 1, sum = 0;
    DivideAndConquer(l, mid), DivideAndConquer(mid + 1, r);
    vector<pair<int, int>> record;
    vector<Node> tmp;
    while (a <= mid && b <= r) {
        if (v[a].b >= v[b].b) {
            bit.update(v[a].c, v[a].cost), record.emplace_back(v[a].c, v[a].cost);
            sum += v[a].cost, tmp.emplace_back(v[a++]);
        } else {
            ans[v[b].ind] += sum - bit.sum(v[b].c - 1), tmp.emplace_back(v[b++]);
        }
    }
    while (a <= mid) tmp.emplace_back(v[a++]);
    while (b <= r) ans[v[b].ind] += sum - bit.sum(v[b].c - 1), tmp.emplace_back(v[b++]);
    for (auto [ind, val]: record) bit.update(ind, -val);
    for (int i = l; i <= r; i++) v[i] = tmp[i - l];
}

set<int> all;
map<int, int> to;

void compress(vector<int> &a) {
    all.clear(), to.clear();
    int cnt = 1;
    for (int i: a) all.insert(i);
    for (int i: all) to[i] = cnt++;
    for (int &i: a) i = to[i];
}

void solve() {
    bit.init((int) v.size() + 1);
    vector<int> A, B, C;
    for (Node i: v) A.emplace_back(i.a), B.emplace_back(i.b), C.emplace_back(i.c);
    compress(A), compress(B), compress(C);
    for (int i = 0; i < (int) v.size(); i++) v[i].a = A[i], v[i].b = B[i], v[i].c = C[i];
    sort(v.begin(), v.end(), [&](Node a, Node b) {
        return (a.a != b.a ? a.a > b.a : (a.b != b.b ? a.b > b.b : a.c > b.c));
    });
    DivideAndConquer(0, (int) v.size() - 1);
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int n, q;
    cin >> n >> q;
    for (int i = 0; i < n; i++) {
        int s, t;
        cin >> s >> t;
        v.emplace_back(s, t, s + t, q + i, 1);
    }
    for (int i = 0; i < q; i++) {
        int x, y, z;
        cin >> x >> y >> z;
        v.emplace_back(x, y, z, i, 0);
    }
    solve();
    for (int i = 0; i < q; i++)
        cout << ans[i] << "\n";
    return 0;
}

Details

In file included from /usr/include/x86_64-linux-gnu/c++/13/bits/c++allocator.h:33,
                 from /usr/include/c++/13/bits/allocator.h:46,
                 from /usr/include/c++/13/string:43,
                 from /usr/include/c++/13/bitset:52,
                 from /usr/include/x86_64-linux-gnu/c++/13/bits/stdc++.h:52,
                 from answer.code:1:
/usr/include/c++/13/bits/new_allocator.h: In instantiation of ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = Node; _Args = {long long int&, long long int&, long long int, long long int, int}; _Tp = Node]’:
/usr/include/c++/13/bits/alloc_traits.h:537:17:   required from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = Node; _Args = {long long int&, long long int&, long long int, long long int, int}; _Tp = Node; allocator_type = std::allocator<Node>]’
/usr/include/c++/13/bits/vector.tcc:117:30:   required from ‘std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int&, long long int&, long long int, long long int, int}; _Tp = Node; _Alloc = std::allocator<Node>; reference = Node&]’
answer.code:90:23:   required from here
/usr/include/c++/13/bits/new_allocator.h:187:11: error: new initializer expression list treated as compound expression [-fpermissive]
  187 |         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/new_allocator.h:187:11: error: no matching function for call to ‘Node::Node(int)’
answer.code:8:8: note: candidate: ‘Node::Node()’
    8 | struct Node {
      |        ^~~~
answer.code:8:8: note:   candidate expects 0 arguments, 1 provided
answer.code:8:8: note: candidate: ‘constexpr Node::Node(const Node&)’
answer.code:8:8: note:   no known conversion for argument 1 from ‘int’ to ‘const Node&’
answer.code:8:8: note: candidate: ‘constexpr Node::Node(Node&&)’
answer.code:8:8: note:   no known conversion for argument 1 from ‘int’ to ‘Node&&’
/usr/include/c++/13/bits/new_allocator.h: In instantiation of ‘void std::__new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = Node; _Args = {long long int&, long long int&, long long int&, long long int&, int}; _Tp = Node]’:
/usr/include/c++/13/bits/alloc_traits.h:537:17:   required from ‘static void std::allocator_traits<std::allocator<_CharT> >::construct(allocator_type&, _Up*, _Args&& ...) [with _Up = Node; _Args = {long long int&, long long int&, long long int&, long long int&, int}; _Tp = Node; allocator_type = std::allocator<Node>]’
/usr/include/c++/13/bits/vector.tcc:117:30:   required from ‘std::vector<_Tp, _Alloc>::reference std::vector<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {long long int&, long long int&, long long int&, long long int&, int}; _Tp = Node; _Alloc = std::allocator<Node>; reference = Node&]’
answer.code:95:23:   required from here
/usr/include/c++/13/bits/new_allocator.h:187:11: error: new initializer expression list treated as compound expression [-fpermissive]
  187 |         { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/13/bits/new_allocator.h:187:11: error: no matching function for call to ‘Node::Node(int)’
answer.code:8:8: note: candidate: ‘Node::Node()’
    8 | struct Node {
      |        ^~~~
answer.code:8:8: note:   candidate expects 0 arguments, 1 provided
answer.code:8:8: note: candidate: ‘constexpr Node::Node(const Node&)’
answer.code:8:8: note:   no known conversion for argument 1 from ‘int’ to ‘const Node&’
answer.code:8:8: note: candidate: ‘constexpr Node::Node(Node&&)’
answer.code:8:8: note:   no known conversion for argument 1 from ‘int’ to ‘Node&&’