제출 #1196128

#제출 시각아이디문제언어결과실행 시간메모리
1196128NeltNaval battle (CEOI24_battle)C++20
컴파일 에러
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";
}

컴파일 시 표준 에러 (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'