#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;
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] && ys[j] + t * dys[j] == ys[i] + t * dys[i]) {
return t;
} else {
return 1e9;
}
}
bool valid(ll ind) {
return (0 <= xs[ind] && xs[ind] <= mxx) && (0 <= ys[ind] && ys[ind] <= mxy);
}
void solve(){
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);
dxs.push_back(d == 'W' ? -1 : (d == 'E' ? 1 : 0));
dys.push_back(d == 'N' ? -1 : (d == 'S' ? 1 : 0));
done.push_back(1e9);
}
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 || 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 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... |