제출 #1282366

#제출 시각아이디문제언어결과실행 시간메모리
1282366iamhereforfunTeams (IOI15_teams)C++20
컴파일 에러
0 ms0 KiB
#include <vector>
#include <algorithm>
using namespace std;

const int MAXN = 500000;

class SegmentTree {
private:
    vector<int> tree;
    int n;
    void build_tree(int node, int l, int r, const vector<int>& arr) {
        if (l == r) {
            tree[node] = arr[l];
            return;
        }
        int mid = (l + r) / 2;
        build_tree(2 * node, l, mid, arr);
        build_tree(2 * node + 1, mid + 1, r, arr);
        tree[node] = min(tree[2 * node], tree[2 * node + 1]);
    }
    int query_tree(int node, int l, int r, int ql, int qr) {
        if (ql > r || qr < l) return 1e9;
        if (ql <= l && r <= qr) return tree[node];
        int mid = (l + r) / 2;
        int left_val = query_tree(2 * node, l, mid, ql, qr);
        int right_val = query_tree(2 * node + 1, mid + 1, r, ql, qr);
        return min(left_val, right_val);
    }
public:
    void build(const vector<int>& arr, int l, int r) {
        n = r - l + 1;
        tree.resize(4 * n);
        build_tree(1, l, r, arr);
    }
    int query(int ql, int qr) {
        return query_tree(1, 1, n, ql, qr);
    }
};

vector<int> H;
SegmentTree segTree;

void init(int N, int A[], int B[]) {
    int n = N;
    vector<int> freq(n + 2, 0);
    for (int i = 0; i < n; i++) {
        int b = B[i];
        if (b > n) b = n;
        freq[b]++;
    }
    H.resize(n + 1);
    H[n] = freq[n];
    for (int x = n - 1; x >= 1; x--) {
        H[x] = H[x + 1] + freq[x];
    }
    segTree.build(H, 1, n);
}

int can(int M, int K[]) {
    sort(K.begin(), K.end());
    long long total = 0;
    for (int k : K) total += k;
    vector<long long> SS(M);
    for (int i = M - 1; i >= 0; i--) {
        SS[i] = total;
        total -= K[i];
    }
    for (int i = 0; i < M; i++) {
        int L = (i == 0) ? 1 : K[i - 1] + 1;
        int R = K[i];
        if (L > R) continue;
        int minH = segTree.query(L, R);
        if (minH < SS[i]) {
            return 0;
        }
    }
    return 1;
}

컴파일 시 표준 에러 (stderr) 메시지

teams.cpp: In function 'int can(int, int*)':
teams.cpp:60:12: error: request for member 'begin' in 'K', which is of non-class type 'int*'
   60 |     sort(K.begin(), K.end());
      |            ^~~~~
teams.cpp:60:23: error: request for member 'end' in 'K', which is of non-class type 'int*'
   60 |     sort(K.begin(), K.end());
      |                       ^~~
teams.cpp:62:18: error: 'begin' was not declared in this scope
   62 |     for (int k : K) total += k;
      |                  ^
teams.cpp:62:18: note: suggested alternatives:
In file included from /usr/include/c++/13/vector:69,
                 from teams.cpp:1:
/usr/include/c++/13/bits/range_access.h:114:37: note:   'std::begin'
  114 |   template<typename _Tp> const _Tp* begin(const valarray<_Tp>&) noexcept;
      |                                     ^~~~~
In file included from /usr/include/c++/13/bits/ranges_util.h:34,
                 from /usr/include/c++/13/tuple:44,
                 from /usr/include/c++/13/bits/uses_allocator_args.h:38,
                 from /usr/include/c++/13/bits/memory_resource.h:41,
                 from /usr/include/c++/13/vector:80:
/usr/include/c++/13/bits/ranges_base.h:489:44: note:   'std::ranges::__cust::begin'
  489 |     inline constexpr __cust_access::_Begin begin{};
      |                                            ^~~~~
In file included from /usr/include/c++/13/bits/stl_iterator_base_types.h:71,
                 from /usr/include/c++/13/bits/stl_algobase.h:65,
                 from /usr/include/c++/13/vector:62:
/usr/include/c++/13/bits/iterator_concepts.h:984:10: note:   'std::ranges::__cust_access::begin'
  984 |     void begin(const auto&) = delete;
      |          ^~~~~
teams.cpp:62:18: error: 'end' was not declared in this scope
   62 |     for (int k : K) total += k;
      |                  ^
teams.cpp:62:18: note: suggested alternatives:
/usr/include/c++/13/bits/range_access.h:116:37: note:   'std::end'
  116 |   template<typename _Tp> const _Tp* end(const valarray<_Tp>&) noexcept;
      |                                     ^~~
/usr/include/c++/13/bits/ranges_base.h:490:42: note:   'std::ranges::__cust::end'
  490 |     inline constexpr __cust_access::_End end{};
      |                                          ^~~
/usr/include/c++/13/bits/ranges_base.h:137:10: note:   'std::ranges::__cust_access::end'
  137 |     void end(const auto&) = delete;
      |          ^~~