Submission #1137503

#TimeUsernameProblemLanguageResultExecution timeMemory
1137503Jawad_Akbar_JJNaval battle (CEOI24_battle)C++20
46 / 100
3131 ms965912 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]; fun(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...