Submission #1137509

#TimeUsernameProblemLanguageResultExecution timeMemory
1137509Jawad_Akbar_JJNaval battle (CEOI24_battle)C++20
46 / 100
347 ms48028 KiB
#include <iostream> #include <vector> #include <algorithm> using namespace std; const int N = 3e5; vector<pair<int,int>> Vec[N]; int x[N], y[N], xa[N], ya[N], er[N]; char dir[N]; pair<int,int> nxt(int i, int d){ return {x[i] + d * xa[dir[i]], y[i] + d * ya[dir[i]]}; } void fun(int n){ for (int i=1;i<=n;i++){ for (int j=1;j<=n;j++){ int d = abs(x[i] - x[j]) + abs(y[i] - y[j]); if (d != 0 and nxt(i, d / 2) == nxt(j, d / 2)) Vec[i].push_back({d / 2, j}); } } for (int i=1;i<=n;i++) sort(rbegin(Vec[i]), rend(Vec[i])); for (int i=1;i<=n;i++){ int mn = 2.1e9, cnt = 1; for (int j=1;j<=n;j++){ while (Vec[j].size() >= 1 and er[Vec[j].back().second]) Vec[j].pop_back(); if (Vec[j].size() >= 1 and Vec[j].back().first < mn) mn = Vec[j].back().first, cnt = 1; else if (Vec[j].size() >= 1 and Vec[j].back().first == mn) cnt++; } if (cnt == 1) break; for (int j=1;j<=n;j++) if (Vec[j].size() >= 1 and Vec[j].back().first == mn) er[j] = 1, Vec[j].clear(); } for (int i=1;i<=n;i++) if (!er[i]) cout<<i<<'\n'; exit(0); } int main(){ xa['E'] = ya['S'] = 1; xa['W'] = ya['N'] = -1; int n; cin>>n; for (int i=1;i<=n;i++) cin>>x[i]>>y[i]>>dir[i]; if (n <= 5000) fun(n); vector<pair<int,pair<int,int>>> vec; for (int i=1;i<=n;i++) vec.push_back({x[i] + y[i], {x[i], i}}); sort(begin(vec), end(vec)); int prv = -1; vector<int> Prv; for (auto [xpy, p] : vec){ if (xpy != prv){ for (int i : Prv) cout<<i<<'\n'; Prv.clear(); } int ind = p.second; if (dir[p.second] == 'E') Prv.push_back(ind); else if (Prv.size() > 0) Prv.pop_back(); else cout<<ind<<'\n'; } for (int i : Prv) cout<<i<<'\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...