제출 #1137707

#제출 시각아이디문제언어결과실행 시간메모리
1137707AbdullahIshfaqNaval battle (CEOI24_battle)C++20
76 / 100
1686 ms1114112 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define MOD 1000000007 ll n, mxx = 0, mxy = 0; vector<ll> ids, xs, ys, dxs, dys, done; vector<char> dir; ll tim(ll i, ll j) { ll t = (abs(xs[j] - xs[i]) + abs(ys[j] - ys[i])) / 2; if (xs[j] + t * dxs[j] == xs[i] + t * dxs[i] and ys[j] + t * dys[j] == ys[i] + t * dys[i]) { return t; } else { return 1e9; } } bool valid(ll ind) { return (0 <= xs[ind] and xs[ind] <= mxx) and (0 <= ys[ind] and ys[ind] <= mxy); } void solve(){ bool flg = 1; cin >> n; for (int i = 0; i < n; i++) { ll x, y; char d; cin >> x >> y >> d; mxx = max(mxx, x); mxy = max(mxy, y); ids.push_back(i); xs.push_back(x); ys.push_back(y); if(d == 'W' or d == 'N'){ flg = 0; } else{ dir.push_back(d); } dxs.push_back(d == 'W' ? -1 : (d == 'E' ? 1 : 0)); dys.push_back(d == 'N' ? -1 : (d == 'S' ? 1 : 0)); done.push_back(1e9); } if(flg){ unordered_map<int, vector<int>> diags; for (int i = 0; i < n; i++) { int diag = xs[i] + ys[i]; if (diags.count(diag) == 0) { diags[diag] = {}; } diags[diag].push_back(i); } for (auto& [diag, shp] : diags) { sort(shp.begin(), shp.end(),[&](auto i, auto j){return xs[i] <= xs[j];}); vector<int> st; for (int i : shp) { if (st.size() == 0 || !(dir[st.back()] == 'E' && dir[i] == 'S')) { st.push_back(i); } else { st.pop_back(); } } for (int i : st) { cout << ids[i] + 1 << endl; } } return ; } vector<tuple<ll, ll, ll>> happ; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { ll tt = tim(i, j); if (tt < 1e9) { happ.emplace_back(tt, i, j); } } } sort(happ.begin(), happ.end()); for (auto [time, i, j] : happ) { if (done[i] < time or done[j] < time) continue; done[i] = done[j] = time; } for (int i = 0; i < n; i++) { if (done[i] == 1e9) { cout << ids[i] + 1 << '\n'; } } } int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int tests = 1; // cin >> tests; for (int i = 1; i <= tests; i++) { solve(); } }
#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...