#include <bits/stdc++.h>
#include <queue>
using namespace std;
typedef long long ll;
#define vi vector<int>
#define si set<int>
#define usi unordered_set<int>
#define sll set<ll>
#define usll unordered_set<ll>
#define vb vector<bool>
#define vll vector<ll>
#define pii pair<int, int>
#define pll pair<ll, ll>
#define vvi vector<vector<int>>
#define vvll vector<vector<ll>>
const ll INF = 1e17;
ll solveEq(ll x1, ll mult1, ll x2, ll mult2) {
if (mult1 == mult2) {
return (x1 == x2) ? 0 : INF;
}
// now mult1 != mult2
if ((x2 - x1) % (mult1 - mult2) == 0)
return (x2 - x1) / (mult1 - mult2);
return INF;
}
void printTuple(tuple<ll, ll, char> &t) {
cout << get<0>(t) << " " << get<1>(t) << " " << get<2>(t) << endl;
}
void solve() {
ll N;
cin >> N;
vector<tuple<ll, ll, char>> S(N);
map<char, pll> dirs;
dirs['N'] = {0, -1};
dirs['S'] = {0, 1};
dirs['E'] = {1, 0};
dirs['W'] = {-1, 0};
for (int i = 0; i < N; i++) {
cin >> get<0>(S[i]) >> get<1>(S[i]) >> get<2>(S[i]);
}
priority_queue<tuple<ll, ll, ll>, vector<tuple<ll, ll, ll>>,
greater<tuple<ll, ll, ll>>>
pq;
for (int i = 0; i < N; i++) {
for (int j = 0; j < i; j++) {
ll x1 = get<0>(S[i]), x2 = get<0>(S[j]);
ll y1 = get<1>(S[i]), y2 = get<1>(S[j]);
char dir1 = get<2>(S[i]), dir2 = get<2>(S[j]);
ll t1 = solveEq(x1, dirs[dir1].first, x2, dirs[dir2].first);
ll t2 = solveEq(y1, dirs[dir1].second, y2, dirs[dir2].second);
if (t1 == t2 && t1 != INF && t1 >= 0) {
pq.push(make_tuple(t1, i, j));
}
}
}
vb active(N, true);
ll tprev = -1;
vll buffer;
while (!pq.empty()) {
auto [t, x, y] = pq.top();
if (t > tprev) {
for (auto j : buffer)
active[j] = false;
buffer.clear();
}
pq.pop();
if (active[x] && active[y]) {
buffer.push_back(x);
buffer.push_back(y);
}
tprev = t;
}
for (auto j : buffer)
active[j] = false;
for (int i = 0; i < N; i++) {
if (active[i])
cout << i + 1 << "\n";
}
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(NULL);
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... |