#include <bits/stdc++.h>
using namespace std;
using pii=pair<int, int>;
using ppiii=pair<pair<int, int>, int>;
vector<int> solve(int N, vector<int> X, vector<int> Y, vector<char> D){
vector<ppiii> navi(N);
for(int i=0; i<N; i++) navi[i]={{X[i], Y[i]}, D[i]};
sort(navi.begin(), navi.end());
map<int, stack<int>> diag;
vector<bool> isAlive(N, true);
for(int i=0; i<N; i++){
if(navi[i].second=='E'){
diag[navi[i].first.first+navi[i].first.second].push(i);
}else if(!diag[navi[i].first.first+navi[i].first.second].empty()){
isAlive[i]=false;
isAlive[diag[navi[i].first.first+navi[i].first.second].top()]=false;
diag[navi[i].first.first+navi[i].first.second].pop();
}
}
vector<int> ans;
for(int i=0; i<N; i++) if(isAlive[i]) ans.push_back(i+1);
return ans;
}
int main(){
int N;
cin >>N;
vector<int> X(N), Y(N);
vector<char> D(N);
for(int i=0; i<N; i++) cin >>X[i] >>Y[i] >>D[i];
vector<int> ans=solve(N, X, Y, D);
for(int i=0; i<ans.size(); i++) cout <<ans[i] <<'\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... |