제출 #1195963

#제출 시각아이디문제언어결과실행 시간메모리
1195963NeltNaval battle (CEOI24_battle)C++20
30 / 100
249 ms32964 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>;

void solve() 
{
    ll n;
    cin >> n;
    map<ll, vector<array<ll, 3>>> mps, mpe;
    for (ll i = 1; i <= n; i++)
    {
        ll x, y;
        cin >> x >> y;
        char c;
        cin >> c;
        if (c == 'S') mps[x + y].push_back({x, y, i});
        else mpe[x + y].push_back({x, y, i});
    }
    vector<ll> alive;
    for (auto [diff, v] : mps)
    {
        sort(v.begin(), v.end());
        vector<array<ll, 3>> &v1 = mpe[diff];
        set<array<ll, 3>> s;
        for (auto i : v1) s.insert(i);
        for (auto [x, y, ind] : v) 
        {
            auto it = s.lower_bound({x + 1, -1, -1});
            if (it == s.begin()) alive.push_back(ind);
            else
            {
                it--;
                s.erase(it);
            }
        }
        v1.clear();
        for (auto i : s) v1.push_back(i);
    }
    for (auto [diff, v] : mpe) 
    for (auto i : v) alive.push_back(i[2]);
    for (ll i : alive) cout << i << endl;
}

int 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";
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...