제출 #1315327

#제출 시각아이디문제언어결과실행 시간메모리
1315327djsksbrbfNaval battle (CEOI24_battle)C++20
30 / 100
119 ms29324 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair <ll, ll> pii; #define fi first #define se second #define pb push_back const int MOD = 1e9 + 7; const int MAX = 2e5 + 5; signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); vector <pair<pii, int>> v; int n; cin >> n; map <int, set<pii>> mp; for(int i = 1 ; i <= n ; i++){ int x, y; cin >> x >> y; char c; cin >> c; if(c == 'S'){ mp[x + y].insert({x, i}); } else{ v.pb({{x, y}, i}); } } sort(v.begin(), v.end(), [&](pair <pii, int> x, pair<pii, int>y){ int sx = x.fi.fi + x.fi.se; int sy= y.fi.fi + y.fi.se; if(sx == sy){ return x.fi.fi > y.fi.fi; } return sx < sy; }); bool dead[n + 5];memset(dead, 0, sizeof(dead)); for(int i = 0 ; i < (int)v.size() ; i++){ int x = v[i].fi.fi; int y = v[i].fi.se; int id = v[i].se; auto oth = mp[x + y].upper_bound({x, 0}); if(oth == mp[x + y].end())continue; dead[id] = dead[(*oth).se] = 1; mp[x + y].erase(oth); } for(int i = 1 ; i <= n ; i++){ if(!dead[i])cout << i << '\n'; } return 0; }
#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...