This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
typedef long long ll;
#define FOR(i,x,y) for(ll i=x; i<y; i++)
#define FORNEG(i,x,y) for(ll i=x; i>y; i--)
using namespace std;
vector<vector<ll>> stuff;
vector<vector<ll>> collisions;
int main(){
ll n; cin >> n;
FOR(i,0,n){
ll x,y;
cin >> x >> y;
char s;
cin >> s;
stuff.push_back({x,y,s, i});
}
FOR(i,0,n){
FOR(j,i+1,n){
ll time1, time2;
set<ll> up = {'S','N'};
set<ll> left = {'E','W'};
if (up.count(stuff[i][2]) && up.count(stuff[j][2]) && stuff[i][0] != stuff[j][0]) continue;
if (left.count(stuff[i][2]) && left.count(stuff[j][2]) && stuff[i][1] != stuff[j][1]) continue;
if (stuff[i][2] == 'S'){
time1 = stuff[i][1] - stuff[j][1];
}
if (stuff[i][2] == 'N'){
time1 = stuff[j][1] - stuff[i][1];
}
if (stuff[i][2] == 'E'){
time1 = stuff[i][0] - stuff[j][0];
}
if (stuff[i][2] == 'W'){
time1 = stuff[j][0] - stuff[i][0];
}
if (stuff[j][2] == 'S'){
time2 = stuff[j][1] - stuff[i][1];
}
if (stuff[j][2] == 'N'){
time2 = stuff[i][1] - stuff[j][1];
}
if (stuff[j][2] == 'E'){
time2 = stuff[j][0] - stuff[i][0];
}
if (stuff[j][2] == 'W'){
time2 = stuff[i][0] - stuff[j][0];
}
if (time1 < 0 && time1==time2){
collisions.push_back({-time1,i+1, j+1});
}
}
}
sort(collisions.begin(), collisions.end());
reverse(collisions.begin(), collisions.end());
set<ll> destroyed;
set<ll> times;
for (auto&i : collisions) times.insert(i[0]);
ll cur;
for (auto&i : times){
vector<ll> temp;
while (collisions.size() && collisions[collisions.size()-1][0] == i){
if (!(destroyed.count(collisions[collisions.size()-1][1]) || destroyed.count(collisions[collisions.size()-1][2]))){
temp.push_back(collisions[collisions.size()-1][1]);
temp.push_back(collisions[collisions.size()-1][2]);
}
collisions.pop_back();
}
for (auto&i : temp) destroyed.insert(i);
}
FOR(i,1,n+1) if (destroyed.count(i) == 0) cout << i << endl;
}
Compilation message (stderr)
Main.cpp: In function 'int main()':
Main.cpp:66:5: warning: unused variable 'cur' [-Wunused-variable]
66 | ll cur;
| ^~~
Main.cpp:55:26: warning: 'time2' may be used uninitialized in this function [-Wmaybe-uninitialized]
55 | if (time1 < 0 && time1==time2){
| ~~~~~^~~~~~~
Main.cpp:57:27: warning: 'time1' may be used uninitialized in this function [-Wmaybe-uninitialized]
57 | collisions.push_back({-time1,i+1, j+1});
| ^~~~~~
# | 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... |