#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |