foo.cc: In function ‘bool cmp(Node, Node)’:
foo.cc:11:41: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
11 | return x.num<y.num||x.num==y.num&&x.xh<y.xh;
| ~~~~~~~~~~~~^~~~~~~~~~~
In file included from /nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algobase.h:71,
from /nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/algorithm:60,
from stdc++.h:51:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h: In instantiation of ‘bool __gnu_cxx::__ops::_Iter_less_iter::operator()(_Iterator1, _Iterator2) const [with _Iterator1 = Node*; _Iterator2 = Node*]’:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:1777:14: required from ‘void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
1777 | if (__comp(__i, __first))
| ~~~~~~^~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:2748:25: required from ‘void std::__inplace_stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
2748 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:4956:28: required from ‘void std::__stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
4956 | std::__inplace_stable_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:4994:36: required from ‘void std::stable_sort(_RAIter, _RAIter) [with _RAIter = Node*]’
4994 | _GLIBCXX_STD_A::__stable_sort(__first, __last,
| ^
foo.cc:57:15: required from here
57 | stable_sort(a+1,a+1+n);
| ~~~~~~~~~~~^~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:45:23: error: no match for ‘operator<’ (operand types are ‘Node’ and ‘Node’)
45 | { return *__it1 < *__it2; }
| ~~~~~~~^~~~~~~~
In file included from /nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algobase.h:67:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1241:5: note: candidate: ‘template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_IteratorL, _Container>&, const __normal_iterator<_IteratorR, _Container>&)’
1241 | operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
| ^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1241:5: note: template argument deduction/substitution failed:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:45:23: note: ‘Node’ is not derived from ‘const __gnu_cxx::__normal_iterator<_IteratorL, _Container>’
45 | { return *__it1 < *__it2; }
| ~~~~~~~^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1249:5: note: candidate: ‘template<class _Iterator, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_Iterator, _Container>&, const __normal_iterator<_Iterator, _Container>&)’
1249 | operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
| ^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1249:5: note: template argument deduction/substitution failed:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:45:23: note: ‘Node’ is not derived from ‘const __gnu_cxx::__normal_iterator<_Iterator, _Container>’
45 | { return *__it1 < *__it2; }
| ~~~~~~~^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h: In instantiation of ‘bool __gnu_cxx::__ops::_Val_less_iter::operator()(_Value&, _Iterator) const [with _Value = Node; _Iterator = Node*]’:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:1757:20: required from ‘void std::__unguarded_linear_insert(_RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Val_less_iter]’
1757 | while (__comp(__val, __next))
| ~~~~~~^~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:1785:36: required from ‘void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
1785 | std::__unguarded_linear_insert(__i,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
1786 | __gnu_cxx::__ops::__val_comp_iter(__comp));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:2748:25: required from ‘void std::__inplace_stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
2748 | std::__insertion_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:4956:28: required from ‘void std::__stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
4956 | std::__inplace_stable_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:4994:36: required from ‘void std::stable_sort(_RAIter, _RAIter) [with _RAIter = Node*]’
4994 | _GLIBCXX_STD_A::__stable_sort(__first, __last,
| ^
foo.cc:57:15: required from here
57 | stable_sort(a+1,a+1+n);
| ~~~~~~~~~~~^~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:98:22: error: no match for ‘operator<’ (operand types are ‘Node’ and ‘Node’)
98 | { return __val < *__it; }
| ~~~~~~^~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1241:5: note: candidate: ‘template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_IteratorL, _Container>&, const __normal_iterator<_IteratorR, _Container>&)’
1241 | operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
| ^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1241:5: note: template argument deduction/substitution failed:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:98:22: note: ‘Node’ is not derived from ‘const __gnu_cxx::__normal_iterator<_IteratorL, _Container>’
98 | { return __val < *__it; }
| ~~~~~~^~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1249:5: note: candidate: ‘template<class _Iterator, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_Iterator, _Container>&, const __normal_iterator<_Iterator, _Container>&)’
1249 | operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
| ^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1249:5: note: template argument deduction/substitution failed:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:98:22: note: ‘Node’ is not derived from ‘const __gnu_cxx::__normal_iterator<_Iterator, _Container>’
98 | { return __val < *__it; }
| ~~~~~~^~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h: In instantiation of ‘bool __gnu_cxx::__ops::_Iter_less_val::operator()(_Iterator, _Value&) const [with _Iterator = Node*; _Value = const Node]’:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algobase.h:1504:14: required from ‘_ForwardIterator std::__lower_bound(_ForwardIterator, _ForwardIterator, const _Tp&, _Compare) [with _ForwardIterator = Node*; _Tp = Node; _Compare = __gnu_cxx::__ops::_Iter_less_val]’
1504 | if (__comp(__middle, __val))
| ~~~~~~^~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:2460:26: required from ‘void std::__merge_without_buffer(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, _Distance, _Distance, _Compare) [with _BidirectionalIterator = Node*; _Distance = long int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
2460 | = std::__lower_bound(__middle, __last, *__first_cut,
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2461 | __gnu_cxx::__ops::__iter_comp_val(__comp));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:2754:34: required from ‘void std::__inplace_stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
2754 | std::__merge_without_buffer(__first, __middle, __last,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
2755 | __middle - __first,
| ~~~~~~~~~~~~~~~~~~~
2756 | __last - __middle,
| ~~~~~~~~~~~~~~~~~~
2757 | __comp);
| ~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:4956:28: required from ‘void std::__stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
4956 | std::__inplace_stable_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:4994:36: required from ‘void std::stable_sort(_RAIter, _RAIter) [with _RAIter = Node*]’
4994 | _GLIBCXX_STD_A::__stable_sort(__first, __last,
| ^
foo.cc:57:15: required from here
57 | stable_sort(a+1,a+1+n);
| ~~~~~~~~~~~^~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:69:22: error: no match for ‘operator<’ (operand types are ‘Node’ and ‘const Node’)
69 | { return *__it < __val; }
| ~~~~~~^~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1241:5: note: candidate: ‘template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_IteratorL, _Container>&, const __normal_iterator<_IteratorR, _Container>&)’
1241 | operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
| ^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1241:5: note: template argument deduction/substitution failed:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:69:22: note: ‘Node’ is not derived from ‘const __gnu_cxx::__normal_iterator<_IteratorL, _Container>’
69 | { return *__it < __val; }
| ~~~~~~^~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1249:5: note: candidate: ‘template<class _Iterator, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_Iterator, _Container>&, const __normal_iterator<_Iterator, _Container>&)’
1249 | operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
| ^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1249:5: note: template argument deduction/substitution failed:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:69:22: note: ‘Node’ is not derived from ‘const __gnu_cxx::__normal_iterator<_Iterator, _Container>’
69 | { return *__it < __val; }
| ~~~~~~^~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h: In instantiation of ‘bool __gnu_cxx::__ops::_Val_less_iter::operator()(_Value&, _Iterator) const [with _Value = const Node; _Iterator = Node*]’:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:1993:14: required from ‘_ForwardIterator std::__upper_bound(_ForwardIterator, _ForwardIterator, const _Tp&, _Compare) [with _ForwardIterator = Node*; _Tp = Node; _Compare = __gnu_cxx::__ops::_Val_less_iter]’
1993 | if (__comp(__val, __middle))
| ~~~~~~^~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:2469:26: required from ‘void std::__merge_without_buffer(_BidirectionalIterator, _BidirectionalIterator, _BidirectionalIterator, _Distance, _Distance, _Compare) [with _BidirectionalIterator = Node*; _Distance = long int; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
2469 | = std::__upper_bound(__first, __middle, *__second_cut,
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2470 | __gnu_cxx::__ops::__val_comp_iter(__comp));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:2754:34: required from ‘void std::__inplace_stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
2754 | std::__merge_without_buffer(__first, __middle, __last,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
2755 | __middle - __first,
| ~~~~~~~~~~~~~~~~~~~
2756 | __last - __middle,
| ~~~~~~~~~~~~~~~~~~
2757 | __comp);
| ~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:4956:28: required from ‘void std::__stable_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = Node*; _Compare = __gnu_cxx::__ops::_Iter_less_iter]’
4956 | std::__inplace_stable_sort(__first, __last, __comp);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_algo.h:4994:36: required from ‘void std::stable_sort(_RAIter, _RAIter) [with _RAIter = Node*]’
4994 | _GLIBCXX_STD_A::__stable_sort(__first, __last,
| ^
foo.cc:57:15: required from here
57 | stable_sort(a+1,a+1+n);
| ~~~~~~~~~~~^~~~~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:98:22: error: no match for ‘operator<’ (operand types are ‘const Node’ and ‘Node’)
98 | { return __val < *__it; }
| ~~~~~~^~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1241:5: note: candidate: ‘template<class _IteratorL, class _IteratorR, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_IteratorL, _Container>&, const __normal_iterator<_IteratorR, _Container>&)’
1241 | operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
| ^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1241:5: note: template argument deduction/substitution failed:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:98:22: note: ‘const Node’ is not derived from ‘const __gnu_cxx::__normal_iterator<_IteratorL, _Container>’
98 | { return __val < *__it; }
| ~~~~~~^~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1249:5: note: candidate: ‘template<class _Iterator, class _Container> bool __gnu_cxx::operator<(const __normal_iterator<_Iterator, _Container>&, const __normal_iterator<_Iterator, _Container>&)’
1249 | operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
| ^~~~~~~~
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/stl_iterator.h:1249:5: note: template argument deduction/substitution failed:
/nix/gcc-14.2.1.20250322/include/c++/14.2.1.20250322/bits/predefined_ops.h:98:22: note: ‘const Node’ is not derived from ‘const __gnu_cxx::__normal_iterator<_Iterator, _Container>’
98 | { return __val < *__it; }
| ~~~~~~^~~~~~~