Submission #1196128

#TimeUsernameProblemLanguageResultExecution timeMemory
1196128NeltNaval battle (CEOI24_battle)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define ll long long #define endl "\n" using namespace std; using namespace __gnu_pbds; mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); template <typename T, typename key = less<T>> using ordered_set = tree<T, null_type, key, rb_tree_tag, tree_order_statistics_node_update>; struct pair_hash { std::size_t operator()(const std::pair<ll, ll>& p) const { return std::hash<ll>()(p.first) ^ (std::hash<ll>()(p.second) << 1); } }; const ll N = 2e5 + 5; ll x[n], y[n], dir[n]; void solve() { ll n; cin >> n; unordered_set<pair<ll, ll>, pair_hash> cord[4]; map<pair<ll, ll>, ll> ind; for (ll i = 0; i < n; i++) { cin >> x[i] >> y[i]; char c; cin >> c; ind[make_pair(x[i], y[i])] = i + 1; if (c == 'N') dir[i] = 0; else if (c == 'S') dir[i] = 1; else if (c == 'W') dir[i] = 2; else if (c == 'E') dir[i] = 3; cord[dir[i]].insert(make_pair(x[i], y[i])); } set<array<ll, 3>> event; set<pair<ll, ll>> cx, cy; for (ll i = 0; i < n; i++) cx.insert(make_pair(x[i], i)), cy.insert(make_pair(y[i], i)); event.insert({-1, (ll)-1e18, (ll)-1e18}); ll c0, c1, c2, c3, id; while (!event.empty()) { auto [tim, x, y] = *event.begin(); event.erase(event.begin()); c0 = cord[0].count(make_pair(x, y + tim)); c1 = cord[1].count(make_pair(x, y - tim)); c2 = cord[2].count(make_pair(x + tim, y)); c3 = cord[3].count(make_pair(x - tim, y)); if ((tim == -1 or c0 + c1 + c2 + c3 > 1) and cx.size() > 1) { event.insert({cx.}) } if (c0 + c1 + c2 + c3 <= 1) continue; if (c0) { id = ind[make_pair(x, y + tim)]; cx.erase(make_pair(::x[id - 1], id)); cy.erase(make_pair(::y[id - 1], id)); cord[0].erase(make_pair(x, y + tim)); } if (c1) { id = ind[make_pair(x, y - tim)]; cx.erase(make_pair(::x[id - 1], id)); cy.erase(make_pair(::y[id - 1], id)); cord[1].erase(make_pair(x, y - tim)); } if (c2) { id = ind[make_pair(x + tim, y)]; cx.erase(make_pair(::x[id - 1], id)); cy.erase(make_pair(::y[id - 1], id)); cord[2].erase(make_pair(x + tim, y)); } if (c3) { id = ind[make_pair(x - tim, y)]; cx.erase(make_pair(::x[id - 1], id)); cy.erase(make_pair(::y[id - 1], id)); cord[3].erase(make_pair(x - tim, y)); } } for (auto i : cord) for (auto j : i) cout << ind[j] << endl; } ll main() { ios_base::sync_with_stdio(0); cin.tie(0); ll t = 1; // precomp(); // cin >> t; for (ll cs = 1; cs <= t; cs++) solve(); // cerr << "\nTime elapsed: " << clock() * 1000.0 / CLOCKS_PER_SEC << " ms\n"; }

Compilation message (stderr)

Main.cpp:17:6: error: 'n' was not declared in this scope
   17 | ll x[n], y[n], dir[n];
      |      ^
Main.cpp:17:12: error: 'n' was not declared in this scope
   17 | ll x[n], y[n], dir[n];
      |            ^
Main.cpp:17:20: error: 'n' was not declared in this scope
   17 | ll x[n], y[n], dir[n];
      |                    ^
Main.cpp: In function 'void solve()':
Main.cpp:26:16: error: 'x' was not declared in this scope
   26 |         cin >> x[i] >> y[i];
      |                ^
Main.cpp:26:24: error: 'y' was not declared in this scope
   26 |         cin >> x[i] >> y[i];
      |                        ^
Main.cpp:31:13: error: 'dir' was not declared in this scope; did you mean 'div'?
   31 |             dir[i] = 0;
      |             ^~~
      |             div
Main.cpp:33:13: error: 'dir' was not declared in this scope; did you mean 'div'?
   33 |             dir[i] = 1;
      |             ^~~
      |             div
Main.cpp:35:13: error: 'dir' was not declared in this scope; did you mean 'div'?
   35 |             dir[i] = 2;
      |             ^~~
      |             div
Main.cpp:37:13: error: 'dir' was not declared in this scope; did you mean 'div'?
   37 |             dir[i] = 3;
      |             ^~~
      |             div
Main.cpp:38:14: error: 'dir' was not declared in this scope; did you mean 'div'?
   38 |         cord[dir[i]].insert(make_pair(x[i], y[i]));
      |              ^~~
      |              div
Main.cpp:42:52: error: 'x' was not declared in this scope
   42 |     for (ll i = 0; i < n; i++) cx.insert(make_pair(x[i], i)), cy.insert(make_pair(y[i], i));
      |                                                    ^
Main.cpp:42:83: error: 'y' was not declared in this scope
   42 |     for (ll i = 0; i < n; i++) cx.insert(make_pair(x[i], i)), cy.insert(make_pair(y[i], i));
      |                                                                                   ^
Main.cpp:55:30: error: expected unqualified-id before '}' token
   55 |             event.insert({cx.})
      |                              ^
Main.cpp:55:25: error: no matching function for call to 'std::set<std::array<long long int, 3> >::insert(<brace-enclosed initializer list>)'
   55 |             event.insert({cx.})
      |             ~~~~~~~~~~~~^~~~~~~
In file included from /usr/include/c++/11/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:87,
                 from Main.cpp:1:
/usr/include/c++/11/bits/stl_set.h:566:9: note: candidate: 'template<class _InputIterator> void std::set<_Key, _Compare, _Alloc>::insert(_InputIterator, _InputIterator) [with _InputIterator = _InputIterator; _Key = std::array<long long int, 3>; _Compare = std::less<std::array<long long int, 3> >; _Alloc = std::allocator<std::array<long long int, 3> >]'
  566 |         insert(_InputIterator __first, _InputIterator __last)
      |         ^~~~~~
/usr/include/c++/11/bits/stl_set.h:566:9: note:   template argument deduction/substitution failed:
Main.cpp:55:25: note:   candidate expects 2 arguments, 1 provided
   55 |             event.insert({cx.})
      |             ~~~~~~~~~~~~^~~~~~~
In file included from /usr/include/c++/11/set:61,
                 from /usr/include/x86_64-linux-gnu/c++/11/bits/stdc++.h:87,
                 from Main.cpp:1:
/usr/include/c++/11/bits/stl_set.h:509:7: note: candidate: 'std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(const value_type&) [with _Key = std::array<long long int, 3>; _Compare = std::less<std::array<long long int, 3> >; _Alloc = std::allocator<std::array<long long int, 3> >; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other>::const_iterator = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::const_iterator; typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other = std::allocator<std::array<long long int, 3> >; typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key> = __gnu_cxx::__alloc_traits<std::allocator<std::array<long long int, 3> >, std::array<long long int, 3> >::rebind<std::array<long long int, 3> >; typename _Alloc::value_type = std::array<long long int, 3>; std::set<_Key, _Compare, _Alloc>::value_type = std::array<long long int, 3>]'
  509 |       insert(const value_type& __x)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_set.h:509:32: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'const value_type&' {aka 'const std::array<long long int, 3>&'}
  509 |       insert(const value_type& __x)
      |              ~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/11/bits/stl_set.h:518:7: note: candidate: 'std::pair<typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other>::const_iterator, bool> std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::array<long long int, 3>; _Compare = std::less<std::array<long long int, 3> >; _Alloc = std::allocator<std::array<long long int, 3> >; typename std::_Rb_tree<_Key, _Key, std::_Identity<_Tp>, _Compare, typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other>::const_iterator = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::const_iterator; typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key>::other = std::allocator<std::array<long long int, 3> >; typename __gnu_cxx::__alloc_traits<_Alloc>::rebind<_Key> = __gnu_cxx::__alloc_traits<std::allocator<std::array<long long int, 3> >, std::array<long long int, 3> >::rebind<std::array<long long int, 3> >; typename _Alloc::value_type = std::array<long long int, 3>; std::set<_Key, _Compare, _Alloc>::value_type = std::array<long long int, 3>]'
  518 |       insert(value_type&& __x)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_set.h:518:27: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::set<std::array<long long int, 3> >::value_type&&' {aka 'std::array<long long int, 3>&&'}
  518 |       insert(value_type&& __x)
      |              ~~~~~~~~~~~~~^~~
/usr/include/c++/11/bits/stl_set.h:546:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::const_iterator, const value_type&) [with _Key = std::array<long long int, 3>; _Compare = std::less<std::array<long long int, 3> >; _Alloc = std::allocator<std::array<long long int, 3> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::const_iterator; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::const_iterator; std::set<_Key, _Compare, _Alloc>::value_type = std::array<long long int, 3>]'
  546 |       insert(const_iterator __position, const value_type& __x)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_set.h:546:7: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/11/bits/stl_set.h:551:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::const_iterator, std::set<_Key, _Compare, _Alloc>::value_type&&) [with _Key = std::array<long long int, 3>; _Compare = std::less<std::array<long long int, 3> >; _Alloc = std::allocator<std::array<long long int, 3> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::const_iterator; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::const_iterator; std::set<_Key, _Compare, _Alloc>::value_type = std::array<long long int, 3>]'
  551 |       insert(const_iterator __position, value_type&& __x)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_set.h:551:7: note:   candidate expects 2 arguments, 1 provided
/usr/include/c++/11/bits/stl_set.h:578:7: note: candidate: 'void std::set<_Key, _Compare, _Alloc>::insert(std::initializer_list<_Tp>) [with _Key = std::array<long long int, 3>; _Compare = std::less<std::array<long long int, 3> >; _Alloc = std::allocator<std::array<long long int, 3> >]'
  578 |       insert(initializer_list<value_type> __l)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_set.h:578:43: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::initializer_list<std::array<long long int, 3> >'
  578 |       insert(initializer_list<value_type> __l)
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/11/bits/stl_set.h:598:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::insert_return_type std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::node_type&&) [with _Key = std::array<long long int, 3>; _Compare = std::less<std::array<long long int, 3> >; _Alloc = std::allocator<std::array<long long int, 3> >; std::set<_Key, _Compare, _Alloc>::insert_return_type = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::insert_return_type; std::set<_Key, _Compare, _Alloc>::node_type = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::node_type]'
  598 |       insert(node_type&& __nh)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_set.h:598:26: note:   no known conversion for argument 1 from '<brace-enclosed initializer list>' to 'std::set<std::array<long long int, 3> >::node_type&&' {aka 'std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::node_type&&'}
  598 |       insert(node_type&& __nh)
      |              ~~~~~~~~~~~~^~~~
/usr/include/c++/11/bits/stl_set.h:603:7: note: candidate: 'std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::insert(std::set<_Key, _Compare, _Alloc>::const_iterator, std::set<_Key, _Compare, _Alloc>::node_type&&) [with _Key = std::array<long long int, 3>; _Compare = std::less<std::array<long long int, 3> >; _Alloc = std::allocator<std::array<long long int, 3> >; std::set<_Key, _Compare, _Alloc>::iterator = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::const_iterator; std::set<_Key, _Compare, _Alloc>::const_iterator = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::const_iterator; std::set<_Key, _Compare, _Alloc>::node_type = std::_Rb_tree<std::array<long long int, 3>, std::array<long long int, 3>, std::_Identity<std::array<long long int, 3> >, std::less<std::array<long long int, 3> >, std::allocator<std::array<long long int, 3> > >::node_type]'
  603 |       insert(const_iterator __hint, node_type&& __nh)
      |       ^~~~~~
/usr/include/c++/11/bits/stl_set.h:603:7: note:   candidate expects 2 arguments, 1 provided
Main.cpp:62:34: error: '::x' has not been declared
   62 |             cx.erase(make_pair(::x[id - 1], id));
      |                                  ^
Main.cpp:63:34: error: '::y' has not been declared
   63 |             cy.erase(make_pair(::y[id - 1], id));
      |                                  ^
Main.cpp:69:34: error: '::x' has not been declared
   69 |             cx.erase(make_pair(::x[id - 1], id));
      |                                  ^
Main.cpp:70:34: error: '::y' has not been declared
   70 |             cy.erase(make_pair(::y[id - 1], id));
      |                                  ^
Main.cpp:76:34: error: '::x' has not been declared
   76 |             cx.erase(make_pair(::x[id - 1], id));
      |                                  ^
Main.cpp:77:34: error: '::y' has not been declared
   77 |             cy.erase(make_pair(::y[id - 1], id));
      |                                  ^
Main.cpp:83:34: error: '::x' has not been declared
   83 |             cx.erase(make_pair(::x[id - 1], id));
      |                                  ^
Main.cpp:84:34: error: '::y' has not been declared
   84 |             cy.erase(make_pair(::y[id - 1], id));
      |                                  ^
At global scope:
cc1plus: error: '::main' must return 'int'