제출 #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...