Submission #1250335

#TimeUsernameProblemLanguageResultExecution timeMemory
1250335Wayne_YanSouvenirs (IOI25_souvenirs)C++20
Compilation error
0 ms0 KiB
#include "souvenirs.h" #include <bits/stdc++.h> using namespace std; using ll = long long; struct dat { vector<int> counts; ll total_price; bool operator<(const dat &b) { return lexicographical_compare(counts.begin(), counts.end(), b.counts.begin(), b.counts.end()); } void reduce(dat d) { assert(d.counts.size() == 1); for (int i = 0; i < (int)counts.size(); i++) { if (counts[i] == d.counts[0]) { total_price -= d.total_price; counts.erase(counts.begin() + i); break; } } } }; void buy_souvenirs(int n, long long p0) { vector<int> count(n); vector<dat> st; vector<dat> done; vector<ll> ans(n); auto calc_next_transaction = [&](dat x) { int fst = x.counts[0]; int lst = x.counts[x.counts.size() - 1]; for (int i = lst - 1; i > fst; i--) { if (ans[i] != 0) return ans[i] - 1; } return (x.total_price - 1) / (int)x.counts.size(); }; auto get_dat = [&](ll x) { auto [rest, v] = transaction(x); for (int i : v) count[i]++; for (int i = (int)v.size() - 1; i >= 0; i--) { if (ans[v[i]] != 0) { rest += ans[v[i]]; v.erase(v.begin() + i); } } dat res; res.counts = v; res.total_price = x - rest; return res; }; ans[0] = p0; while (true) { int idx = -1; for (int i = 0; i < n; i++) { if (ans[i] == 0) { idx = i; break; } } if (idx == -1) break; auto process = [&](ll x) { st.push_back(get_dat(x)); for (int i = (int)st.size() - 1; i >= 0; i--) { if (st[i].counts.size() == 1) { ans[st[i].counts[0]] = st[i].total_price; done.push_back(st[i]); st.erase(st.begin() + i); } } while (!done.empty()) { auto d = done.back(); done.pop_back(); for (int i = (int)st.size() - 1; i >= 0; i--) { st[i].reduce(d); if (st[i].counts.size() == 1) { ans[st[i].counts[0]] = st[i].total_price; done.push_back(st[i]); st.erase(st.begin() + i); } } } }; process(ans[idx - 1] - 1); while (!st.empty()) { sort(st.rbegin(), st.rend()); auto fst = st[0]; ll next_transaction = calc_next_transaction(fst); process(next_transaction); } } for (int i = 1; i < n; i++) { while (count[i] < i) { transaction(ans[i]); count[i]++; } } }

Compilation message (stderr)

souvenirs.cpp: In lambda function:
souvenirs.cpp:46:18: error: 'begin' was not declared in this scope
   46 |     for (int i : v)
      |                  ^
souvenirs.cpp:46:18: note: suggested alternatives:
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/valarray:1228:5: note:   'std::begin'
 1228 |     begin(const valarray<_Tp>& __va) noexcept
      |     ^~~~~
In file included from /usr/include/c++/11/string_view:48,
                 from /usr/include/c++/11/bits/basic_string.h:48,
                 from /usr/include/c++/11/string:55,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/ranges_base.h:561:44: note:   'std::ranges::__cust::begin'
  561 |     inline constexpr __cust_access::_Begin begin{};
      |                                            ^~~~~
In file included from /usr/include/c++/11/filesystem:46,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:129,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/fs_dir.h:549:3: note:   'std::filesystem::__cxx11::begin'
  549 |   begin(recursive_directory_iterator __iter) noexcept
      |   ^~~~~
In file included from /usr/include/c++/11/bits/stl_iterator_base_types.h:71,
                 from /usr/include/c++/11/bits/stl_algobase.h:65,
                 from /usr/include/c++/11/vector:60,
                 from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/bits/iterator_concepts.h:949:10: note:   'std::ranges::__cust_access::begin'
  949 |     void begin(const auto&) = delete;
      |          ^~~~~
souvenirs.cpp:46:18: error: 'end' was not declared in this scope
   46 |     for (int i : v)
      |                  ^
souvenirs.cpp:46:18: note: suggested alternatives:
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/valarray:1255:5: note:   'std::end'
 1255 |     end(const valarray<_Tp>& __va) noexcept
      |     ^~~
In file included from /usr/include/c++/11/string_view:48,
                 from /usr/include/c++/11/bits/basic_string.h:48,
                 from /usr/include/c++/11/string:55,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/ranges_base.h:562:42: note:   'std::ranges::__cust::end'
  562 |     inline constexpr __cust_access::_End end{};
      |                                          ^~~
In file included from /usr/include/c++/11/filesystem:46,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:129,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/fs_dir.h:554:3: note:   'std::filesystem::__cxx11::end'
  554 |   end(recursive_directory_iterator) noexcept
      |   ^~~
In file included from /usr/include/c++/11/string_view:48,
                 from /usr/include/c++/11/bits/basic_string.h:48,
                 from /usr/include/c++/11/string:55,
                 from /usr/include/c++/11/bits/locale_classes.h:40,
                 from /usr/include/c++/11/bits/ios_base.h:41,
                 from /usr/include/c++/11/ios:42,
                 from /usr/include/c++/11/istream:38,
                 from /usr/include/c++/11/sstream:38,
                 from /usr/include/c++/11/complex:45,
                 from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/ranges_base.h:136:10: note:   'std::ranges::__cust_access::end'
  136 |     void end(const auto&) = delete;
      |          ^~~
souvenirs.cpp:48:25: error: request for member 'size' in 'v', which is of non-class type 'std::tuple_element<1, std::pair<std::vector<int>, long long int> >::type' {aka 'long long int'}
   48 |     for (int i = (int)v.size() - 1; i >= 0; i--) {
      |                         ^~~~
souvenirs.cpp:49:16: error: invalid types 'std::tuple_element<1, std::pair<std::vector<int>, long long int> >::type {aka long long int}[int]' for array subscript
   49 |       if (ans[v[i]] != 0) {
      |                ^
souvenirs.cpp:50:22: error: invalid types 'std::tuple_element<1, std::pair<std::vector<int>, long long int> >::type {aka long long int}[int]' for array subscript
   50 |         rest += ans[v[i]];
      |                      ^
souvenirs.cpp:51:11: error: request for member 'erase' in 'v', which is of non-class type 'std::tuple_element<1, std::pair<std::vector<int>, long long int> >::type' {aka 'long long int'}
   51 |         v.erase(v.begin() + i);
      |           ^~~~~
souvenirs.cpp:51:19: error: request for member 'begin' in 'v', which is of non-class type 'std::tuple_element<1, std::pair<std::vector<int>, long long int> >::type' {aka 'long long int'}
   51 |         v.erase(v.begin() + i);
      |                   ^~~~~
souvenirs.cpp:55:18: error: no match for 'operator=' (operand types are 'std::vector<int>' and 'std::tuple_element<1, std::pair<std::vector<int>, long long int> >::type' {aka 'long long int'})
   55 |     res.counts = v;
      |                  ^
In file included from /usr/include/c++/11/vector:72,
                 from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/bits/vector.tcc:198:5: note: candidate: 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(const std::vector<_Tp, _Alloc>&) [with _Tp = int; _Alloc = std::allocator<int>]'
  198 |     vector<_Tp, _Alloc>::
      |     ^~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/vector.tcc:199:42: note:   no known conversion for argument 1 from 'std::tuple_element<1, std::pair<std::vector<int>, long long int> >::type' {aka 'long long int'} to 'const std::vector<int>&'
  199 |     operator=(const vector<_Tp, _Alloc>& __x)
      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
In file included from /usr/include/c++/11/vector:67,
                 from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/bits/stl_vector.h:709:7: note: candidate: 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::vector<_Tp, _Alloc>&&) [with _Tp = int; _Alloc = std::allocator<int>]'
  709 |       operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move())
      |       ^~~~~~~~
/usr/include/c++/11/bits/stl_vector.h:709:26: note:   no known conversion for argument 1 from 'std::tuple_element<1, std::pair<std::vector<int>, long long int> >::type' {aka 'long long int'} to 'std::vector<int>&&'
  709 |       operator=(vector&& __x) noexcept(_Alloc_traits::_S_nothrow_move())
      |                 ~~~~~~~~~^~~
/usr/include/c++/11/bits/stl_vector.h:730:7: note: candidate: 'std::vector<_Tp, _Alloc>& std::vector<_Tp, _Alloc>::operator=(std::initializer_list<_Tp>) [with _Tp = int; _Alloc = std::allocator<int>]'
  730 |       operator=(initializer_list<value_type> __l)
      |       ^~~~~~~~
/usr/include/c++/11/bits/stl_vector.h:730:46: note:   no known conversion for argument 1 from 'std::tuple_element<1, std::pair<std::vector<int>, long long int> >::type' {aka 'long long int'} to 'std::initializer_list<int>'
  730 |       operator=(initializer_list<value_type> __l)
      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
souvenirs.cpp:56:25: error: no match for 'operator-' (operand types are 'll' {aka 'long long int'} and 'std::tuple_element<0, std::pair<std::vector<int>, long long int> >::type' {aka 'std::vector<int>'})
   56 |     res.total_price = x - rest;
      |                       ~ ^ ~~~~
      |                       |   |
      |                       |   std::tuple_element<0, std::pair<std::vector<int>, long long int> >::type {aka std::vector<int>}
      |                       ll {aka long long int}
In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/vector:60,
                 from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/bits/stl_iterator.h:577:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr decltype ((__y.base() - __x.base())) std::operator-(const std::reverse_iterator<_IteratorL>&, const std::reverse_iterator<_IteratorR>&)'
  577 |     operator-(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/11/bits/stl_iterator.h:577:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::reverse_iterator<_IteratorL>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/vector:60,
                 from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/bits/stl_iterator.h:1693:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr decltype ((__x.base() - __y.base())) std::operator-(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)'
 1693 |     operator-(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/11/bits/stl_iterator.h:1693:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::move_iterator<_IteratorL>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from souvenirs.cpp:2:
/usr/include/c++/11/complex:362:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator-(const std::complex<_Tp>&, const std::complex<_Tp>&)'
  362 |     operator-(const complex<_Tp>& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/11/complex:362:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::complex<_Tp>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from souvenirs.cpp:2:
/usr/include/c++/11/complex:371:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator-(const std::complex<_Tp>&, const _Tp&)'
  371 |     operator-(const complex<_Tp>& __x, const _Tp& __y)
      |     ^~~~~~~~
/usr/include/c++/11/complex:371:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::complex<_Tp>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from souvenirs.cpp:2:
/usr/include/c++/11/complex:380:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator-(const _Tp&, const std::complex<_Tp>&)'
  380 |     operator-(const _Tp& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/11/complex:380:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   'std::tuple_element<0, std::pair<std::vector<int>, long long int> >::type' {aka 'std::vector<int>'} is not derived from 'const std::complex<_Tp>'
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:54,
                 from souvenirs.cpp:2:
/usr/include/c++/11/complex:457:5: note: candidate: 'template<class _Tp> constexpr std::complex<_Tp> std::operator-(const std::complex<_Tp>&)'
  457 |     operator-(const complex<_Tp>& __x)
      |     ^~~~~~~~
/usr/include/c++/11/complex:457:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::complex<_Tp>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom1, class _Dom2> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Expr, std::_Expr, _Dom1, _Dom2>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::_Expr<_Dom2, typename _Dom2::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Expr, std::_Constant, _Dom, typename _Dom::value_type>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const typename _Dom::value_type&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Constant, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const typename _Dom::value_type&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   'std::tuple_element<0, std::pair<std::vector<int>, long long int> >::type' {aka 'std::vector<int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Expr, std::_ValArray, _Dom, typename _Dom::value_type>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const std::_Expr<_Dom1, typename _Dom1::value_type>&, const std::valarray<typename _Dom::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::_Expr<_Dom1, typename _Dom1::value_type>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/bits/valarray_after.h:406:5: note: candidate: 'template<class _Dom> std::_Expr<std::__detail::_BinClos<std::__minus, std::_ValArray, std::_Expr, typename _Dom::value_type, _Dom>, typename std::__fun<std::__minus, typename _Dom1::value_type>::result_type> std::operator-(const std::valarray<typename _Dom::value_type>&, const std::_Expr<_Dom1, typename _Dom1::value_type>&)'
  406 |     _DEFINE_EXPR_BINARY_OPERATOR(-, struct std::__minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   'std::tuple_element<0, std::pair<std::vector<int>, long long int> >::type' {aka 'std::vector<int>'} is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/valarray:1187:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__minus, std::_ValArray, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__minus, _Tp>::result_type> std::operator-(const std::valarray<_Tp>&, const std::valarray<_Tp>&)'
 1187 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/valarray:1187:1: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::valarray<_Tp>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/valarray:1187:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__minus, std::_ValArray, std::_Constant, _Tp, _Tp>, typename std::__fun<std::__minus, _Tp>::result_type> std::operator-(const std::valarray<_Tp>&, const typename std::valarray<_Tp>::value_type&)'
 1187 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/valarray:1187:1: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const std::valarray<_Tp>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:95,
                 from souvenirs.cpp:2:
/usr/include/c++/11/valarray:1187:1: note: candidate: 'template<class _Tp> std::_Expr<std::__detail::_BinClos<std::__minus, std::_Constant, std::_ValArray, _Tp, _Tp>, typename std::__fun<std::__minus, _Tp>::result_type> std::operator-(const typename std::valarray<_Tp>::value_type&, const std::valarray<_Tp>&)'
 1187 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/11/valarray:1187:1: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   'std::tuple_element<0, std::pair<std::vector<int>, long long int> >::type' {aka 'std::vector<int>'} is not derived from 'const std::valarray<_Tp>'
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/vector:60,
                 from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/bits/stl_iterator.h:1255:5: note: candidate: 'template<class _IteratorL, class _IteratorR, class _Container> constexpr decltype ((__lhs.base() - __rhs.base())) __gnu_cxx::operator-(const __gnu_cxx::__normal_iterator<_IteratorL, _Container>&, const __gnu_cxx::__normal_iterator<_IteratorR, _Container>&)'
 1255 |     operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/11/bits/stl_iterator.h:1255:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const __gnu_cxx::__normal_iterator<_IteratorL, _Container>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~
In file included from /usr/include/c++/11/bits/stl_algobase.h:67,
                 from /usr/include/c++/11/vector:60,
                 from souvenirs.h:2,
                 from souvenirs.cpp:1:
/usr/include/c++/11/bits/stl_iterator.h:1268:5: note: candidate: 'template<class _Iterator, class _Container> constexpr typename __gnu_cxx::__normal_iterator<_Iterator, _Container>::difference_type __gnu_cxx::operator-(const __gnu_cxx::__normal_iterator<_Iterator, _Container>&, const __gnu_cxx::__normal_iterator<_Iterator, _Container>&)'
 1268 |     operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
      |     ^~~~~~~~
/usr/include/c++/11/bits/stl_iterator.h:1268:5: note:   template argument deduction/substitution failed:
souvenirs.cpp:56:27: note:   mismatched types 'const __gnu_cxx::__normal_iterator<_Iterator, _Container>' and 'll' {aka 'long long int'}
   56 |     res.total_price = x - rest;
      |                           ^~~~