| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 1250335 | Wayne_Yan | Souvenirs (IOI25_souvenirs) | C++20 | Compilation error  | 0 ms | 0 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;
      |                           ^~~~