#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int INF = 1e9;
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n; cin >> n;
    vector<tuple<int, int, int, int>> arr(n);
    for (int i = 0; i < n; i++) {
        int x, y; cin >> x >> y;
        y = INF - y;
        char dir; cin >> dir;
        arr[i] = {y, x, dir, i};
        assert(dir == 'S' || dir == 'E');
    }
    map<int, stack<int>> hmap;
    vector<bool> collide(n, false);
    sort(arr.rbegin(), arr.rend());
    for (auto [y, x, d, i]: arr) {
        int line = x - y;
        if (d == 'S') {
            hmap[line].push(i);
        }
        else {
            if (hmap[line].empty()) continue;
            collide[i] = true;
            collide[hmap[line].top()] = true;
            hmap[line].pop();
        }
    }
    for (int i = 0; i < n; i++) {
        if (!collide[i]) cout << i+1 << "\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... |