#include <bits/stdc++.h>
using namespace std;
char dir[4] = {'N', 'S', 'E', 'W'};
struct Ship {
int x, y, d;
pair<int, int> move;
void init() {
if (d == 0) move = {0, -1};
else if (d == 1) move = {0, 1};
else if (d == 2) move = {1, 0};
else move = {-1, 0};
}
};
int main() {
int n;
cin >> n;
vector<Ship> s(n);
for (int i = 0; i < n; ++i) {
int x, y, d;
char c;
cin >> x >> y >> c;
if (c == 'N') d = 0;
else if (c == 'S') d = 1;
else if (c == 'E') d = 2;
else d = 3;
s[i].x = x+300;
s[i].y = y+300;
s[i].d = d;
s[i].init();
}
int c = 300;
vector<vector<int>> grid(701, vector<int>(701, -1));
vector<bool> sink(n, 0);
for (int j = 0; j <= c; ++j) {
for (int i = 0; i < n; ++i) {
if (sink[i]) continue;
if (grid[s[i].x][s[i].y] != -1) {
sink[i] = true;;
sink[grid[s[i].x][s[i].y]] = true;
} else grid[s[i].x][s[i].y] = i;
}
for (int i = 0; i < n; ++i) {
grid[s[i].x][s[i].y] = -1;
s[i].x += s[i].move.first;
s[i].y += s[i].move.second;
}
}
for (int i = 0; i < n; ++i) {
if (!sink[i]) cout << i+1 << endl;
}
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... |