제출 #624851

#제출 시각아이디문제언어결과실행 시간메모리
624851dutinmeowCake 3 (JOI19_cake3)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; #pragma region zip #ifndef ZIP_HPP #define ZIP_HPP namespace zip_internal { template<typename Iter> using select_access_type_for = conditional_t< is_same_v<Iter, vector<bool>::iterator> || is_same_v<Iter, vector<bool>::const_iterator>, typename Iter::value_type, typename Iter::reference >; template<typename ...Args, size_t ...Index> auto any_match_impl(tuple<Args...> const & lhs, tuple<Args...> const & rhs, index_sequence<Index...>) -> bool { auto result = false; result = (... | (get<Index>(lhs) == get<Index>(rhs))); return result; } template<typename ...Args> auto any_match(tuple<Args...> const &lhs, tuple<Args...> const &rhs) -> bool { return any_match_impl(lhs, rhs, index_sequence_for<Args...>{}); } template<typename ... Iters> class zip_iterator { public: using value_type = tuple<select_access_type_for<Iters>...>; zip_iterator() = delete; zip_iterator(Iters &&...iters) : m_iters {forward<Iters>(iters)...} {} auto operator++() -> zip_iterator &{ apply([](auto && ... args) { ((args += 1), ...); }, m_iters); return *this; } auto operator++(int) -> zip_iterator { auto tmp = *this; ++*this; return tmp; } auto operator!=(zip_iterator const &other) { return !(*this == other); } auto operator==(zip_iterator const &other) { auto result = false; return any_match(m_iters, other.m_iters); } auto operator*() -> value_type { return apply([](auto && ... args) { return value_type(*args...); }, m_iters); } private: tuple<Iters...> m_iters; }; template<typename T> using select_iterator_for = conditional_t< is_const_v<remove_reference_t<T>>, typename decay_t<T>::const_iterator, typename decay_t<T>::iterator >; template<typename ...T> class zipper { public: using zip_type = zip_iterator<select_iterator_for<T>...>; template<typename ...Args> zipper(Args && ... args) : m_args{forward<Args>(args)...} {} auto begin() -> zip_type { return apply([](auto &&...args){ return zip_type(std::begin(args)...); }, m_args); } auto end() -> zip_type { return apply([](auto && ... args) { return zip_type(std::end(args)...); }, m_args); } private: tuple<T...> m_args; }; } template<typename ...T> auto zip(T &&...t) { return zip_internal::zipper<T ...>{forward<T>(t)...}; } #endif #pragma endregion zip #pragma region y_combinator #ifndef Y_COMBINATOR_HPP #define Y_COMBINATOR_HPP template<class Fun> class y_combinator_result { Fun fun_; public: template<class T> explicit y_combinator_result(T &&fun) : fun_(std::forward<T>(fun)) {} template<class ...Args> decltype(auto) operator()(Args &&...args) { return fun_(std::ref(*this), std::forward<Args>(args)...); } }; template<class Fun> decltype(auto) y_combinator(Fun &&fun) { return y_combinator_result<std::decay_t<Fun>>(std::forward<Fun>(fun)); } #endif #pragma endregion y_combinator #pragma region chmax #ifndef CHMAX_HPP #define CHMAX_HPP template<typename T> bool chmax(T &a, T b) { if (a < b) { a = b; return true; } return false; } #endif #pragma endregion chmax class wavelet_tree { int n; vector<long long> vmap; vector<vector<int>> tree; vector<vector<long long>> psum; template<typename I> void build(I begin, I end, int t, int vl, int vr) { if (vl == vr) { int nn = end - begin + 1; psum[t].reserve(nn); psum[t].push_back(0); for (auto it = begin; it != end; it++) psum[t].push_back(psum[t].back() + vmap[*it]); return; } int vm = (vl + vr) / 2, nn = end - begin + 1; tree[t].reserve(nn); psum[t].reserve(nn); tree[t].push_back(0); psum[t].push_back(0); for (auto it = begin; it != end; it++) { tree[t].push_back(tree[t].back() + (*it <= vm)); psum[t].push_back(psum[t].back() + vmap[*it]); } auto pivot = stable_partition(begin, end, [vm](int x) { return x <= vm; }); build(begin, pivot, t * 2, vl, vm); build(pivot, end, t * 2 + 1, vm + 1, vr); } long long query(int l, int r, int k, int t, int vl, int vr) { if (vl == vr) return k * vmap[vl]; int vm = (vl + vr) / 2, lv = tree[t][r] - tree[t][l - 1]; if (k <= lv) return query(tree[t][l - 1] + 1, tree[t][r], k, t * 2, vl, vm); else return psum[t * 2][tree[t][r]] - psum[t * 2][tree[t][l - 1]] +\ query(l - tree[t][l - 1], r - tree[t][r], k - lv, t * 2 + 1, vm + 1, vr); } public: wavelet_tree(vector<long long> vec) { init(vec.begin(), vec.end()); } template<typename I> void init(I begin, I end) { map<long long, int> m; for (auto it = begin; it != end; it++) m[*it] = 0; n = 0; vmap.resize(m.size()); for (auto &[k, v] : m) vmap[v = n++] = k; for (auto it = begin; it != end; it++) *it = m[*it]; tree.resize(4 * n); psum.resize(4 * n); build(begin, end, 1, 0, n); } // returns sum of k smallest elements in range [l, r] long long query(int l, int r, int k) { assert(k <= r - l + 1); return query(l + 1, r + 1, k, 1, 0, n); } }; int main() { int N, M; cin >> N >> M; vector<pair<long long, long long>> A(N); for (auto &[v, c] : A) { cin >> v >> c; v = -v; } sort(A.begin(), A.end(), [](auto a, auto b) { return a.second < b.second; }); vector<long long> V(N), C(N); for (auto &&[a, v, c] : zip(A, V, C)) tie(v, c) = a; wavelet_tree wt(V); vector<int> rpos(N - M + 1); auto dnq = y_combinator([&](auto dnq, int pl, int pr, int ql, int qr) -> void { if (pr < pl) return; if (ql == qr) { for (int i = pl; i <= pr; i++) rpos[i] = ql; return; } int pm = (pl + pr) / 2, qm = -1; long long val = LLONG_MIN; for (int i = ql; i <= qr; i++) { if (i - pm + 1 < M) continue; long long cur = -wt.query(pm, i, M) - 2 * (C[i] - C[pm]); if (chmax(val, cur)) qm = i; } rpos[pm] = qm; dnq(pl, pm - 1, ql, qm); dnq(pm + 1, pr, qm, qr); }); dnq(0, N - M, M - 1, N - 1); long long ans = LLONG_MIN; for (int l = 0; l < N - M + 1; l++) { int r = rpos[l]; long long val = (r == -1 ? -1 : -wt.query(l, r, M) - 2 * (C[r] - C[l])); chmax(ans, val); } cout << ans << '\n'; }

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

cake3.cpp:4: warning: ignoring '#pragma region zip' [-Wunknown-pragmas]
    4 | #pragma region zip
      | 
cake3.cpp:100: warning: ignoring '#pragma endregion zip' [-Wunknown-pragmas]
  100 | #pragma endregion zip
      | 
cake3.cpp:102: warning: ignoring '#pragma region y_combinator' [-Wunknown-pragmas]
  102 | #pragma region y_combinator
      | 
cake3.cpp:127: warning: ignoring '#pragma endregion y_combinator' [-Wunknown-pragmas]
  127 | #pragma endregion y_combinator
      | 
cake3.cpp:129: warning: ignoring '#pragma region chmax' [-Wunknown-pragmas]
  129 | #pragma region chmax
      | 
cake3.cpp:145: warning: ignoring '#pragma endregion chmax' [-Wunknown-pragmas]
  145 | #pragma endregion chmax
      | 
cake3.cpp:12:3: error: 'is_same_v' was not declared in this scope
   12 |   is_same_v<Iter, vector<bool>::iterator> ||
      |   ^~~~~~~~~
cake3.cpp:12:41: error: wrong number of template arguments (2, should be 3)
   12 |   is_same_v<Iter, vector<bool>::iterator> ||
      |                                         ^
In file included from /usr/include/c++/10/bits/move.h:57,
                 from /usr/include/c++/10/bits/nested_exception.h:40,
                 from /usr/include/c++/10/exception:148,
                 from /usr/include/c++/10/ios:39,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from cake3.cpp:1:
/usr/include/c++/10/type_traits:2558:11: note: provided for 'template<bool _Cond, class _Iftrue, class _Iffalse> using conditional_t = typename std::conditional::type'
 2558 |     using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type;
      |           ^~~~~~~~~~~~~
cake3.cpp: In function 'bool zip_internal::any_match_impl(const std::tuple<_Tps ...>&, const std::tuple<_Tps ...>&, std::index_sequence<Index ...>)':
cake3.cpp:21:54: warning: fold-expressions only available with '-std=c++17' or '-std=gnu++17'
   21 |   result = (... | (get<Index>(lhs) == get<Index>(rhs)));
      |                                                      ^
cake3.cpp: At global scope:
cake3.cpp:33:28: error: 'select_access_type_for' was not declared in this scope
   33 |   using value_type = tuple<select_access_type_for<Iters>...>;
      |                            ^~~~~~~~~~~~~~~~~~~~~~
cake3.cpp:33:56: error: template argument 1 is invalid
   33 |   using value_type = tuple<select_access_type_for<Iters>...>;
      |                                                        ^
cake3.cpp:59:23: error: 'value_type' does not name a type
   59 |   auto operator*() -> value_type {
      |                       ^~~~~~~~~~
cake3.cpp: In lambda function:
cake3.cpp:40:47: warning: fold-expressions only available with '-std=c++17' or '-std=gnu++17'
   40 |    apply([](auto && ... args) { ((args += 1), ...); }, m_iters);
      |                                               ^~~
cake3.cpp: At global scope:
cake3.cpp:69:3: error: 'is_const_v' was not declared in this scope
   69 |   is_const_v<remove_reference_t<T>>,
      |   ^~~~~~~~~~
cake3.cpp:69:34: error: wrong number of template arguments (1, should be 3)
   69 |   is_const_v<remove_reference_t<T>>,
      |                                  ^~
In file included from /usr/include/c++/10/bits/move.h:57,
                 from /usr/include/c++/10/bits/nested_exception.h:40,
                 from /usr/include/c++/10/exception:148,
                 from /usr/include/c++/10/ios:39,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from cake3.cpp:1:
/usr/include/c++/10/type_traits:2558:11: note: provided for 'template<bool _Cond, class _Iftrue, class _Iffalse> using conditional_t = typename std::conditional::type'
 2558 |     using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type;
      |           ^~~~~~~~~~~~~
cake3.cpp:77:33: error: 'select_iterator_for' was not declared in this scope
   77 |   using zip_type = zip_iterator<select_iterator_for<T>...>;
      |                                 ^~~~~~~~~~~~~~~~~~~
cake3.cpp:77:54: error: template argument 1 is invalid
   77 |   using zip_type = zip_iterator<select_iterator_for<T>...>;
      |                                                      ^
cake3.cpp:82:19: error: 'zip_type' does not name a type
   82 |   auto begin() -> zip_type {
      |                   ^~~~~~~~
cake3.cpp:86:17: error: 'zip_type' does not name a type
   86 |   auto end() -> zip_type {
      |                 ^~~~~~~~
cake3.cpp: In member function 'void wavelet_tree::init(I, I)':
cake3.cpp:199:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
  199 |   for (auto &[k, v] : m)
      |              ^
cake3.cpp: In function 'int main()':
cake3.cpp:219:13: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
  219 |  for (auto &[v, c] : A) {
      |             ^
cake3.cpp:227:14: warning: structured bindings only available with '-std=c++17' or '-std=gnu++17'
  227 |  for (auto &&[a, v, c] : zip(A, V, C))
      |              ^
cake3.cpp:227:37: error: no matching function for call to 'begin(zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>&)'
  227 |  for (auto &&[a, v, c] : zip(A, V, C))
      |                                     ^
In file included from /usr/include/c++/10/bits/range_access.h:36,
                 from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from cake3.cpp:1:
/usr/include/c++/10/initializer_list:90:5: note: candidate: 'template<class _Tp> constexpr const _Tp* std::begin(std::initializer_list<_Tp>)'
   90 |     begin(initializer_list<_Tp> __ils) noexcept
      |     ^~~~~
/usr/include/c++/10/initializer_list:90:5: note:   template argument deduction/substitution failed:
cake3.cpp:227:37: note:   'zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>' is not derived from 'std::initializer_list<_Tp>'
  227 |  for (auto &&[a, v, c] : zip(A, V, C))
      |                                     ^
In file included from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from cake3.cpp:1:
/usr/include/c++/10/bits/range_access.h:51:5: note: candidate: 'template<class _Container> decltype (__cont.begin()) std::begin(_Container&)'
   51 |     begin(_Container& __cont) -> decltype(__cont.begin())
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:51:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> decltype (__cont.begin()) std::begin(_Container&) [with _Container = zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>]':
cake3.cpp:227:37:   required from here
/usr/include/c++/10/bits/range_access.h:51:50: error: 'class zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>' has no member named 'begin'
   51 |     begin(_Container& __cont) -> decltype(__cont.begin())
      |                                           ~~~~~~~^~~~~
/usr/include/c++/10/bits/range_access.h:61:5: note: candidate: 'template<class _Container> decltype (__cont.begin()) std::begin(const _Container&)'
   61 |     begin(const _Container& __cont) -> decltype(__cont.begin())
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:61:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> decltype (__cont.begin()) std::begin(const _Container&) [with _Container = zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>]':
cake3.cpp:227:37:   required from here
/usr/include/c++/10/bits/range_access.h:61:56: error: 'const class zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>' has no member named 'begin'
   61 |     begin(const _Container& __cont) -> decltype(__cont.begin())
      |                                                 ~~~~~~~^~~~~
/usr/include/c++/10/bits/range_access.h:90:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::begin(_Tp (&)[_Nm])'
   90 |     begin(_Tp (&__arr)[_Nm])
      |     ^~~~~
/usr/include/c++/10/bits/range_access.h:90:5: note:   template argument deduction/substitution failed:
cake3.cpp:227:37: note:   mismatched types '_Tp [_Nm]' and 'zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>'
  227 |  for (auto &&[a, v, c] : zip(A, V, C))
      |                                     ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from cake3.cpp:1:
/usr/include/c++/10/valarray:1214:5: note: candidate: 'template<class _Tp> _Tp* std::begin(std::valarray<_Tp>&)'
 1214 |     begin(valarray<_Tp>& __va)
      |     ^~~~~
/usr/include/c++/10/valarray:1214:5: note:   template argument deduction/substitution failed:
cake3.cpp:227:37: note:   'zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>' is not derived from 'std::valarray<_Tp>'
  227 |  for (auto &&[a, v, c] : zip(A, V, C))
      |                                     ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from cake3.cpp:1:
/usr/include/c++/10/valarray:1224:5: note: candidate: 'template<class _Tp> const _Tp* std::begin(const std::valarray<_Tp>&)'
 1224 |     begin(const valarray<_Tp>& __va)
      |     ^~~~~
/usr/include/c++/10/valarray:1224:5: note:   template argument deduction/substitution failed:
cake3.cpp:227:37: note:   'zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>' is not derived from 'const std::valarray<_Tp>'
  227 |  for (auto &&[a, v, c] : zip(A, V, C))
      |                                     ^
cake3.cpp:227:37: error: no matching function for call to 'end(zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>&)'
In file included from /usr/include/c++/10/bits/range_access.h:36,
                 from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from cake3.cpp:1:
/usr/include/c++/10/initializer_list:101:5: note: candidate: 'template<class _Tp> constexpr const _Tp* std::end(std::initializer_list<_Tp>)'
  101 |     end(initializer_list<_Tp> __ils) noexcept
      |     ^~~
/usr/include/c++/10/initializer_list:101:5: note:   template argument deduction/substitution failed:
cake3.cpp:227:37: note:   'zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>' is not derived from 'std::initializer_list<_Tp>'
  227 |  for (auto &&[a, v, c] : zip(A, V, C))
      |                                     ^
In file included from /usr/include/c++/10/string:54,
                 from /usr/include/c++/10/bits/locale_classes.h:40,
                 from /usr/include/c++/10/bits/ios_base.h:41,
                 from /usr/include/c++/10/ios:42,
                 from /usr/include/c++/10/istream:38,
                 from /usr/include/c++/10/sstream:38,
                 from /usr/include/c++/10/complex:45,
                 from /usr/include/c++/10/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:54,
                 from cake3.cpp:1:
/usr/include/c++/10/bits/range_access.h:71:5: note: candidate: 'template<class _Container> decltype (__cont.end()) std::end(_Container&)'
   71 |     end(_Container& __cont) -> decltype(__cont.end())
      |     ^~~
/usr/include/c++/10/bits/range_access.h:71:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> decltype (__cont.end()) std::end(_Container&) [with _Container = zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>]':
cake3.cpp:227:37:   required from here
/usr/include/c++/10/bits/range_access.h:71:48: error: 'class zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>' has no member named 'end'
   71 |     end(_Container& __cont) -> decltype(__cont.end())
      |                                         ~~~~~~~^~~
/usr/include/c++/10/bits/range_access.h:81:5: note: candidate: 'template<class _Container> decltype (__cont.end()) std::end(const _Container&)'
   81 |     end(const _Container& __cont) -> decltype(__cont.end())
      |     ^~~
/usr/include/c++/10/bits/range_access.h:81:5: note:   template argument deduction/substitution failed:
/usr/include/c++/10/bits/range_access.h: In substitution of 'template<class _Container> decltype (__cont.end()) std::end(const _Container&) [with _Container = zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>]':
cake3.cpp:227:37:   required from here
/usr/include/c++/10/bits/range_access.h:81:54: error: 'const class zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>' has no member named 'end'
   81 |     end(const _Container& __cont) -> decltype(__cont.end())
      |                                               ~~~~~~~^~~
/usr/include/c++/10/bits/range_access.h:100:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> constexpr _Tp* std::end(_Tp (&)[_Nm])'
  100 |     end(_Tp (&__arr)[_Nm])
      |     ^~~
/usr/include/c++/10/bits/range_access.h:100:5: note:   template argument deduction/substitution failed:
cake3.cpp:227:37: note:   mismatched types '_Tp [_Nm]' and 'zip_internal::zipper<std::vector<std::pair<long long int, long long int>, std::allocator<std::pair<long long int, long long int> > >&, std::vector<long long int, std::allocator<long long int> >&, std::vector<long long int, std::allocator<long long int> >&>'
  227 |  for (auto &&[a, v, c] : zip(A, V, C))
      |                                     ^
In file included from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:95,
                 from cake3.cpp:1:
/usr/include/c++/10/valarray:1234:5: note: candidate: 'template<class _Tp> _Tp* std::end(std::valarray<_Tp>&)'
 1234 |     end(valarray<_Tp>& __va)
      |     ^~~
/usr/include/c++/10/valarray:1234:5: note:   template ar