#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
ios::sync_with_stdio(false);
cin.tie(nullptr);
vector<int> x(n), y(n);
vector<char> d(n);
vector<bool> active(n, true);
vector<bool> collided(n, false);
for (int i = 0; i < n; i++) {
cin >> x[i] >> y[i] >> d[i];
}
int xmax = *max_element(x.begin(), x.end());
int ymax = *max_element(y.begin(), y.end());
if (n == 1) {
// Only one ship, cannot collide
collided[0] = false;
} else {
bool moving = true;
while (moving) {
moving = false;
// Move all active ships
for (int i = 0; i < n; i++) {
if (!active[i]) continue;
if (d[i] == 'N') y[i] -= 2;
else if (d[i] == 'S') y[i] += 2;
else if (d[i] == 'E') x[i] += 2;
else if (d[i] == 'W') x[i] -= 2;
if (x[i] > xmax || x[i] < 0 || y[i] > ymax || y[i] < 0) {
active[i] = false;
} else {
moving = true;
}
}
// Check for collisions
for (int i = 0; i < n; i++) {
if (!active[i]) continue;
for (int j = i + 1; j < n; j++) {
if (!active[j]) continue;
if (x[i] == x[j] && y[i] == y[j]) {
collided[i] = true;
collided[j] = true;
active[i] = false;
active[j] = false;
}
}
}
}
}
for (int i = 0; i < n; i++) {
if (!collided[i]) {
cout << i + 1 << "\n";
}
}
return 0;
}
# | 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... |