Submission #400360

# Submission time Handle Problem Language Result Execution time Memory
400360 2021-05-07T22:07:43 Z 12tqian IOI Fever (JOI21_fever) C++17
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>

using namespace std;

#define f1r(i, a, b) for (int i = a; i < b; ++i)
#define f0r(i, a) f1r(i, 0, a)
#define each(t, a) for (auto& t : a)

#define mp make_pair
#define f first
#define s second
#define pb push_back
#define eb emplace_back
#define sz(x) (int)(x).size()
#define all(x) begin(x), end(x)

typedef long long ll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;

template <class T> bool ckmin(T& a, const T& b) { return b < a ? a = b, 1 : 0; }
template <class T> bool ckmax(T& a, const T& b) { return a < b ? a = b, 1 : 0; }

const int INF = numeric_limits<int>::max();

int main() {
    cin.tie(0)->sync_with_stdio(0);
    int n; cin >> n;
    vpi p(n);
    f0r(i, n) cin >> p[i].f >> p[i].s;
    map<int, set<int>> X;
    map<int, set<int>> Y;
    map<int, set<int>> S;
    map<int, set<int>> D;
    f0r(i, n) {
        X[p[i].f].insert(i);
        Y[p[i].s].insert(i);
        S[p[i].f + p[i].s].insert(i);
        D[p[i].f - p[i].s].insert(i);
    }
    each(v, X) {
        sort(all(v.s), [&](int x, int y) {
            return p[x].s < p[y].s;
        });
    }
    each(v, Y) {
        sort(all(v.s), [&](int x, int y) {
            return p[x].f < p[y].f;
        });
    }
    each(v, S) {
        sort(all(v.s), [&](int x, int y) {
            return p[x].f < p[y].f;
        });
    }
    each(v, D) {
        sort(all(v.s), [&](int x, int y) {
            return p[x].f < p[y].f;
        });
    }
    auto run_dijkstra = [&](int beg) -> int {
        priority_queue<pi, vpi, greater<pi>> pq;
        vi dist(4 * n, INF);
        vector<bool> vis(4 * n);
        
        int cnt = 0;

        auto ad = [&](int a, ll b) {
            if (vis[a] && dist[a] == b) {
                return;
            }
            vis[a] = true;
            cnt++;
            if (dist[a] <= b) return;
            pq.push({dist[a] = b, a});
        };
        ad(beg, 0);
        auto calc = [&](pi x, pi y) -> int {
            int nd = 2 * max(abs(x.f - y.f), abs(x.s - y.s));
            if (x.f == y.f) {
                nd = abs(x.s - y.s);
            } else if (x.s == y.s) {
                nd = abs(x.f - y.f);       
            }
            return nd;
        };
        while (!pq.empty()) {
            auto x = pq.top();
            pq.pop();
            int u = x.s / 4;
            int d = x.s % 4;
            if (dist[4 * u + d] < x.f) {
                continue;
            }
            { // vertical
                auto& v = X[p[u].f];
                if (d == 2) { 
                    auto loc = v.begin();
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 0, nd);
                        loc++;
                    }
                }
                if (d == 0) {
                    auto loc = prev(v.end());
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 2, nd);
                        loc--;
                    }
                }
            }
            { // horizontal
                auto& v = Y[p[u].s];
                if (d == 3) { 
                    auto loc = v.begin();
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 1, nd);
                        loc++;
                    }
                }
                if (d == 1) {
                    auto loc = prev(v.end());
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 3, nd);
                        loc--;
                    }
                }
            }
            { // sum
                auto& v = S[p[u].f + p[u].s];
                if (d == 3) { 
                    auto loc = v.begin();
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 2, nd);
                        loc++;
                    }
                }
                if (d == 0) {
                    auto loc = v.begin();
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 1, nd);
                        loc++;
                    }
                }
                if (d == 1) {
                    auto loc = prev(v.end());
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 0, nd);
                        loc--;
                    }
                }
                if (d == 2) {
                    auto loc = prev(v.end());
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 3, nd);
                        loc--;
                    }
                }
            }
            { // diff
                auto& v = D[p[u].f - p[u].s];
                if (d == 3) { 
                    auto loc = v.begin();
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 0, nd);
                        loc++;
                    }
                }
                if (d == 2) {
                    auto loc = v.begin();
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 1, nd);
                        loc++;
                    }
                }
                if (d == 0) {
                    auto loc = prev(v.end());
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 3, nd);
                        loc--;
                    }
                }
                if (d == 1) {
                    auto loc = prev(v.end());
                    while (*loc != u) {
                        int i = *loc;
                        int nd = calc(p[i], p[u]);
                        if (nd < x.f) break;
                        ad(4 * i + 2, nd);
                        loc--;
                    }
                }
            }
        }
        int res = 0;
        f0r(i, n) {
            int a = 0;
            f0r(d, 4) {
                a += (dist[4 * i + d] < INF);
            }
            assert(a <= 1);
            res += a;
        }
        // assert(cnt <= 5 * n);
        return res;
    };
    int ans = 0;
    f0r(d, 4) {
        ckmax(ans, run_dijkstra(d));
    }
    cout << ans << '\n';

    return 0;
}

/**
 * first try n^2 bash
 * 0 - up
 * 1 - right
 * 2 - down
 * 3 - left
 */

Compilation message

In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h: In instantiation of 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::_Rb_tree_const_iterator<int>; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<main()::<lambda(int, int)> >]':
/usr/include/c++/9/bits/stl_algo.h:4899:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = std::_Rb_tree_const_iterator<int>; _Compare = main()::<lambda(int, int)>]'
fever.cpp:48:10:   required from here
/usr/include/c++/9/bits/stl_algo.h:1968:22: error: no match for 'operator-' (operand types are 'std::_Rb_tree_const_iterator<int>' and 'std::_Rb_tree_const_iterator<int>')
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/bits/specfun.h:45,
                 from /usr/include/c++/9/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_iterator.h:415:5: note: candidate: 'template<class _IteratorL, class _IteratorR> constexpr decltype ((__y.base() - __x.base())) std::operator-(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)'
  415 |     operator-(const reverse_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h:415:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::reverse_iterator<_Iterator>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/bits/stl_algobase.h:67,
                 from /usr/include/c++/9/bits/specfun.h:45,
                 from /usr/include/c++/9/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:41,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_iterator.h:1212: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>&)'
 1212 |     operator-(const move_iterator<_IteratorL>& __x,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_iterator.h:1212:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::move_iterator<_IteratorL>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from fever.cpp:1:
/usr/include/c++/9/complex:357:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator-(const std::complex<_Tp>&, const std::complex<_Tp>&)'
  357 |     operator-(const complex<_Tp>& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/9/complex:357:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::complex<_Tp>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from fever.cpp:1:
/usr/include/c++/9/complex:366:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator-(const std::complex<_Tp>&, const _Tp&)'
  366 |     operator-(const complex<_Tp>& __x, const _Tp& __y)
      |     ^~~~~~~~
/usr/include/c++/9/complex:366:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::complex<_Tp>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from fever.cpp:1:
/usr/include/c++/9/complex:375:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator-(const _Tp&, const std::complex<_Tp>&)'
  375 |     operator-(const _Tp& __x, const complex<_Tp>& __y)
      |     ^~~~~~~~
/usr/include/c++/9/complex:375:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::complex<_Tp>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:54,
                 from fever.cpp:1:
/usr/include/c++/9/complex:452:5: note: candidate: 'template<class _Tp> std::complex<_Tp> std::operator-(const std::complex<_Tp>&)'
  452 |     operator-(const complex<_Tp>& __x)
      |     ^~~~~~~~
/usr/include/c++/9/complex:452:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::complex<_Tp>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/vector:68,
                 from /usr/include/c++/9/functional:62,
                 from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/9/algorithm:71,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_bvector.h:214:3: note: candidate: 'std::ptrdiff_t std::operator-(const std::_Bit_iterator_base&, const std::_Bit_iterator_base&)'
  214 |   operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
      |   ^~~~~~~~
/usr/include/c++/9/bits/stl_bvector.h:214:39: note:   no known conversion for argument 1 from 'std::_Rb_tree_const_iterator<int>' to 'const std::_Bit_iterator_base&'
  214 |   operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
In file included from /usr/include/c++/9/deque:67,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:68,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_deque.h:370:5: note: candidate: 'template<class _Tp, class _Ref, class _Ptr> typename std::_Deque_iterator<_Tp, _Ref, _Ptr>::difference_type std::operator-(const std::_Deque_iterator<_Tp, _Ref, _Ptr>&, const std::_Deque_iterator<_Tp, _Ref, _Ptr>&)'
  370 |     operator-(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_deque.h:370:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::_Deque_iterator<_Tp, _Ref, _Ptr>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/deque:67,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:68,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_deque.h:382:5: note: candidate: 'template<class _Tp, class _RefL, class _PtrL, class _RefR, class _PtrR> typename std::_Deque_iterator<_Tp, _Ref, _Ptr>::difference_type std::operator-(const std::_Deque_iterator<_Tp, _Ref, _Ptr>&, const std::_Deque_iterator<_Tp, _RefR, _PtrR>&)'
  382 |     operator-(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x,
      |     ^~~~~~~~
/usr/include/c++/9/bits/stl_deque.h:382:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::_Deque_iterator<_Tp, _Ref, _Ptr>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:95,
                 from fever.cpp:1:
/usr/include/c++/9/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(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:95,
                 from fever.cpp:1:
/usr/include/c++/9/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(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:95,
                 from fever.cpp:1:
/usr/include/c++/9/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(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:95,
                 from fever.cpp:1:
/usr/include/c++/9/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(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/c++/9/valarray:603,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:95,
                 from fever.cpp:1:
/usr/include/c++/9/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(-, __minus)
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/bits/valarray_after.h:406:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::_Expr<_Dom1, typename _Dom1::value_type>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:95,
                 from fever.cpp:1:
/usr/include/c++/9/valarray:1186: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>&)'
 1186 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/valarray:1186:1: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::valarray<_Tp>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:95,
                 from fever.cpp:1:
/usr/include/c++/9/valarray:1186: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&)'
 1186 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/valarray:1186:1: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::valarray<_Tp>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
In file included from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:95,
                 from fever.cpp:1:
/usr/include/c++/9/valarray:1186: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>&)'
 1186 | _DEFINE_BINARY_OPERATOR(-, __minus)
      | ^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/9/valarray:1186:1: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/9/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/9/bits/stdc++.h:65,
                 from fever.cpp:1:
/usr/include/c++/9/bits/stl_algo.h:1968:22: note:   'std::_Rb_tree_const_iterator<int>' is not derived from 'const std::valarray<_Tp>'
 1968 |     std::__lg(__last - __first) * 2,
      |               ~~~~~~~^~~~~~~~~
/usr/include/c++/9/bits/stl_algo.h: In instantiation of 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::_Rb_tree_const_iterator<int>; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<main()::<lambda(int, int)> >]':
/usr/include/c++/9/bits/stl_algo.h:4899:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = std::_Rb_tree_const_iterator<int>; _Compare = main()::<lambda(int, int)>]'
fever.cpp:53:10:   required from here
/usr/include/c++