제출 #1022104

#제출 시각아이디문제언어결과실행 시간메모리
10221040npataBulldozer (JOI17_bulldozer)C++17
컴파일 에러
0 ms0 KiB
#include<bits/stdc++.h> using namespace std; #define float double #define int long long const float PI = 3.14159; const float EPSILON = 0.0001; #define vec vector struct Point { int x; int y; int w; int i; #include<bits/stdc++.h> using namespace std; #define float double #define int long long const float PI = 3.14159; const float EPSILON = 0.0001; #define vec vector struct Point { int x; int y; int w; int i; }; float angle(Point p1, Point p2) { Point dif = {p2.x-p1.x, p2.y-p1.y}; return atan2(dif.y, dif.x); } float norm_angle(float angle) { while(angle >= 2*PI) angle -= 2*PI; return angle; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vec<Point> ps(n); for(int i = 0; i<n; i++) { cin >> ps[i].x >> ps[i].y >> ps[i].w; } sort(ps.begin(), ps.end(), [&](auto p1, auto p2) { return p1.x == p2.x ? p1.y < p2.y : p1.x < p2.x; }); for(int i = 0; i<n; i++) ps[i].i = i; vec<pair<float, pair<int, int>>> evs(0); for(int i = 0; i<n; i++) { for(int j = i+1; j<n; j++) { float cur_angle = angle(ps[i], ps[j]); //cerr << "ANGLE: " << cur_angle << '\n'; float t1 = ((float)3)/2 * PI; float t2 = ((float)1)/2 * PI; float dif1 = (t1 + 2*PI + EPSILON) - cur_angle; float dif2 = (t2 + 2*PI + EPSILON) - cur_angle; evs.push_back({norm_angle(dif1), {i, j}}); evs.push_back({norm_angle(dif2), {i, j}}); } } sort(evs.begin(), evs.end()); vec<int> ap(n); iota(ap.begin(), ap.end(), 0); int ans = 0; evs.push_back({1000000000000000, {}}); for(int l = 0; l<evs.size()-1; l++) { auto ev = evs[l]; int i = ev.second.first; int j = ev.second.second; int temp = ps[i].i; ps[i].i = ps[j].i; ps[j].i = temp; //cerr << "swapping: " << i << ' ' << j << " at angle: " << ev.first << '\n'; swap(ap[ps[i].i], ap[ps[j].i]); if(evs[l].first - evs[l+1].first < EPSILON) continue; int sum = 0; int mx = 0; for(int i = 0; i<n; i++) { sum += ps[ap[i]].w; if(sum < 0) sum = 0; mx = max(sum, mx); } //cerr << mx << '\n'; ans = max(mx, ans); } cout << ans << '\n'; } }; float angle(Point p1, Point p2) { Point dif = {p2.x-p1.x, p2.y-p1.y}; return atan2(dif.y, dif.x); } float norm_angle(float angle) { while(angle >= 2*PI) angle -= 2*PI; return angle; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vec<Point> ps(n); for(int i = 0; i<n; i++) { cin >> ps[i].x >> ps[i].y >> ps[i].w; } sort(ps.begin(), ps.end(), [&](auto p1, auto p2) { return p1.x == p2.x ? p1.y < p2.y : p1.x < p2.x; }); for(int i = 0; i<n; i++) ps[i].i = i; vec<pair<float, pair<int, int>>> evs(0); for(int i = 0; i<n; i++) { for(int j = i+1; j<n; j++) { float cur_angle = angle(ps[i], ps[j]); //cerr << "ANGLE: " << cur_angle << '\n'; float t1 = ((float)3)/2 * PI; float t2 = ((float)1)/2 * PI; float dif1 = (t1 + 2*PI) - cur_angle; float dif2 = (t2 + 2*PI) - cur_angle; evs.push_back({norm_angle(dif1), {i, j}}); evs.push_back({norm_angle(dif2), {i, j}}); } } sort(evs.begin(), evs.end()); vec<int> ap(n); iota(ap.begin(), ap.end(), 0); int ans = 0; evs.push_back({1000000000000000, {}}); for(int l = 0; l<evs.size()-1; l++) { auto ev = evs[l]; int i = ev.second.first; int j = ev.second.second; int temp = ps[i].i; ps[i].i = ps[j].i; ps[j].i = temp; //cerr << "swapping: " << i << ' ' << j << " at angle: " << ev.first << '\n'; swap(ap[ps[i].i], ap[ps[j].i]); if(evs[l].first - evs[l+1].first < EPSILON) continue; int sum = 0; int mx = 0; for(int i = 0; i<n; i++) { sum += ps[ap[i]].w; if(sum < 0) sum = 0; mx = max(sum, mx); } //cerr << mx << '\n'; ans = max(mx, ans); } cout << ans << '\n'; }

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

bulldozer.cpp:20:7: error: expected nested-name-specifier before 'namespace'
   20 | using namespace std;
      |       ^~~~~~~~~
bulldozer.cpp:31:8: error: 'Point::Point' has the same name as the class in which it is declared
   31 | struct Point {
      |        ^~~~~
bulldozer.cpp: In member function 'int32_t Point::main()':
bulldozer.cpp:92:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<double, std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   92 |  for(int l = 0; l<evs.size()-1; l++) {
      |                 ~^~~~~~~~~~~~~
bulldozer.cpp:121:1: warning: no return statement in function returning non-void [-Wreturn-type]
  121 | }
      | ^
bulldozer.cpp: In function 'int32_t main()':
bulldozer.cpp:177:18: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<double, std::pair<long long int, long long int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  177 |  for(int l = 0; l<evs.size()-1; l++) {
      |                 ~^~~~~~~~~~~~~
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_algo.h: In instantiation of 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]':
/usr/include/c++/10/bits/stl_algo.h:1886:25:   required from 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1977:31:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:4892:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = Point::main()::<lambda(auto:23, auto:24)>]'
bulldozer.cpp:62:103:   required from here
/usr/include/c++/10/bits/stl_algo.h:1851:17: error: use of deleted function 'Point& Point::operator=(Point&&)'
 1851 |        *__first = _GLIBCXX_MOVE(__val);
      |                 ^
bulldozer.cpp:13:8: note: 'Point& Point::operator=(Point&&)' is implicitly deleted because the default definition would be ill-formed:
   13 | struct Point {
      |        ^~~~~
bulldozer.cpp:13:8: error: non-static const member 'const double Point::PI', cannot use default assignment operator
bulldozer.cpp:13:8: error: non-static const member 'const double Point::EPSILON', cannot use default assignment operator
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_algo.h: In instantiation of 'void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<main()::<lambda(auto:25, auto:26)> >]':
/usr/include/c++/10/bits/stl_algo.h:1886:25:   required from 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<main()::<lambda(auto:25, auto:26)> >]'
/usr/include/c++/10/bits/stl_algo.h:1977:31:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<main()::<lambda(auto:25, auto:26)> >]'
/usr/include/c++/10/bits/stl_algo.h:4892:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = main()::<lambda(auto:25, auto:26)>]'
bulldozer.cpp:147:103:   required from here
/usr/include/c++/10/bits/stl_algo.h:1851:17: error: use of deleted function 'Point& Point::operator=(Point&&)'
 1851 |        *__first = _GLIBCXX_MOVE(__val);
      |                 ^
In file included from /usr/include/c++/10/bits/stl_algo.h:61,
                 from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_heap.h: In instantiation of 'void std::__pop_heap(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]':
/usr/include/c++/10/bits/stl_algo.h:1669:19:   required from 'void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1937:25:   required from 'void std::__partial_sort(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1953:27:   required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Size = long int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1974:25:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:4892:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = Point::main()::<lambda(auto:23, auto:24)>]'
bulldozer.cpp:62:103:   required from here
/usr/include/c++/10/bits/stl_heap.h:262:17: error: use of deleted function 'Point& Point::operator=(Point&&)'
  262 |       *__result = _GLIBCXX_MOVE(*__first);
      |                 ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h: In instantiation of 'void std::iter_swap(_ForwardIterator1, _ForwardIterator2) [with _ForwardIterator1 = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _ForwardIterator2 = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >]':
/usr/include/c++/10/bits/stl_algo.h:85:20:   required from 'void std::__move_median_to_first(_Iterator, _Iterator, _Iterator, _Iterator, _Compare) [with _Iterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1924:34:   required from '_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1958:38:   required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Size = long int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1974:25:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:4892:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = Point::main()::<lambda(auto:23, auto:24)>]'
bulldozer.cpp:62:103:   required from here
/usr/include/c++/10/bits/stl_algobase.h:182:11: error: no matching function for call to 'swap(Point&, Point&)'
  182 |       swap(*__a, *__b);
      |       ~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/bits/stl_pair.h:59,
                 from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/move.h:189:5: note: candidate: 'template<class _Tp> std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&)'
  189 |     swap(_Tp& __a, _Tp& __b)
      |     ^~~~
/usr/include/c++/10/bits/move.h:189:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/move.h:57,
                 from /usr/include/c++/10/bits/stl_pair.h:59,
                 from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bulldozer.cpp:1:
/usr/include/c++/10/type_traits: In substitution of 'template<bool _Cond, class _Tp> using __enable_if_t = typename std::enable_if::type [with bool _Cond = false; _Tp = void]':
/usr/include/c++/10/type_traits:2195:11:   required by substitution of 'template<class ... _Cond> using _Require = std::__enable_if_t<std::__and_< <template-parameter-1-1> >::value> [with _Cond = {std::__not_<std::__is_tuple_like<Point> >, std::is_move_constructible<Point>, std::is_move_assignable<Point>}]'
/usr/include/c++/10/bits/move.h:189:5:   required by substitution of 'template<class _Tp> std::_Require<std::__not_<std::__is_tuple_like<_Tp> >, std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&, _Tp&) [with _Tp = Point]'
/usr/include/c++/10/bits/stl_algobase.h:182:11:   required from 'void std::iter_swap(_ForwardIterator1, _ForwardIterator2) [with _ForwardIterator1 = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _ForwardIterator2 = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >]'
/usr/include/c++/10/bits/stl_algo.h:85:20:   required from 'void std::__move_median_to_first(_Iterator, _Iterator, _Iterator, _Iterator, _Compare) [with _Iterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1924:34:   required from '_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1958:38:   required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Size = long int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1974:25:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:4892:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = Point::main()::<lambda(auto:23, auto:24)>]'
bulldozer.cpp:62:103:   required from here
/usr/include/c++/10/type_traits:2192:11: error: no type named 'type' in 'struct std::enable_if<false, void>'
 2192 |     using __enable_if_t = typename enable_if<_Cond, _Tp>::type;
      |           ^~~~~~~~~~~~~
In file included from /usr/include/c++/10/bits/stl_pair.h:59,
                 from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h: In instantiation of 'void std::iter_swap(_ForwardIterator1, _ForwardIterator2) [with _ForwardIterator1 = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _ForwardIterator2 = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >]':
/usr/include/c++/10/bits/stl_algo.h:85:20:   required from 'void std::__move_median_to_first(_Iterator, _Iterator, _Iterator, _Iterator, _Compare) [with _Iterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1924:34:   required from '_RandomAccessIterator std::__unguarded_partition_pivot(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1958:38:   required from 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Size = long int; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:1974:25:   required from 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<Point::main()::<lambda(auto:23, auto:24)> >]'
/usr/include/c++/10/bits/stl_algo.h:4892:18:   required from 'void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = Point::main()::<lambda(auto:23, auto:24)>]'
bulldozer.cpp:62:103:   required from here
/usr/include/c++/10/bits/move.h:213:5: note: candidate: 'template<class _Tp, long unsigned int _Nm> std::__enable_if_t<std::__is_swappable<_Tp>::value> std::swap(_Tp (&)[_Nm], _Tp (&)[_Nm])'
  213 |     swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
      |     ^~~~
/usr/include/c++/10/bits/move.h:213:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:182:11: note:   mismatched types '_Tp [_Nm]' and 'Point'
  182 |       swap(*__a, *__b);
      |       ~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_pair.h:533:5: note: candidate: 'template<class _T1, class _T2> typename std::enable_if<std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&)'
  533 |     swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
      |     ^~~~
/usr/include/c++/10/bits/stl_pair.h:533:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:182:11: note:   'Point' is not derived from 'std::pair<_T1, _T2>'
  182 |       swap(*__a, *__b);
      |       ~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/bits/stl_algobase.h:64,
                 from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_pair.h:541:5: note: candidate: 'template<class _T1, class _T2> typename std::enable_if<(! std::__and_<std::__is_swappable<_T1>, std::__is_swappable<_T2> >::value)>::type std::swap(std::pair<_T1, _T2>&, std::pair<_T1, _T2>&)' (deleted)
  541 |     swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete;
      |     ^~~~
/usr/include/c++/10/bits/stl_pair.h:541:5: note:   template argument deduction/substitution failed:
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:182:11: note:   'Point' is not derived from 'std::pair<_T1, _T2>'
  182 |       swap(*__a, *__b);
      |       ~~~~^~~~~~~~~~~~
In file included from /usr/include/c++/10/bits/stl_algo.h:61,
                 from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from bulldozer.cpp:1:
/usr/include/c++/10/bits/stl_heap.h: In instantiation of 'void std::__pop_heap(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare&) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<Point*, std::vector<Point> >; _Compare = __gnu_cxx::__ops::_Iter_comp_it