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>
using namespace std;
long long int check(long long int x1, long long int y1, char c1, long long int x2,
long long int y2,char c2){
if((c1 == 'N' or c1 == 'S') and (c2 == 'E' or c2 == 'W')){
swap(x1,x2);
swap(y1,y2);
swap(c1,c2);
}
if(c1 == c2){
return -1;
}
if(c1 == 'E'){
if(c2 == 'W'){
if(y1 != y2){
return -1;
}else{
long long int res = (x2 - x1)/2;
if(res > 0){
return res;
}else{
return -1;
}
}
}
if(c2 == 'N'){
long long int a = x2 - x1;
long long int b = y2 - y1;
if(a == b and a > 0){
return a;
}else{
return -1;
}
}
if(c2 == 'S'){
long long int a = x2 - x1;
long long int b = y1 - y2;
if(a == b and a > 0){
return a;
}else{
return -1;
}
}
}
if(c1 == 'W'){
if(c2 == 'E'){
if(y1 != y2){
return -1;
}else{
long long int res = (x1 - x2)/2;
if(res > 0){
return res;
}else{
return -1;
}
}
}
if(c2 == 'N'){
long long int a = x1 - x2;
long long int b = y2 - y1;
if(a == b and a > 0){
return a;
}else{
return -1;
}
}
if(c2 == 'S'){
long long int a = x1 - x2;
long long int b = y1 - y2;
if(a == b and a > 0){
return a;
}else{
return -1;
}
}
}
if(c1 == 'N'){
if(x1 != x2){
return -1;
}
long long int res = (y1 - y2) / 2;
if(res > 0){
return res;
}
}
if(c1 == 'S'){
if(x1 != x2){
return -1;
}
long long int res = (y2 - y1) / 2;
if(res > 0){
return res;
}
}
return -1;
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
long long int x[n],y[n];
long long int disa[n];
char c[n];
// cout << check(2,4,'E',4,2,'S');
long long int INF = 1e18;
for(int i = 0; i < n; i++){
cin >> x[i] >> y[i] >> c[i];
disa[i] = 1e18;
}
vector<pair<long long int,pair<int,int> > > v;
for(int i = 0; i < n; i++){
for(int j = i + 1; j < n; j++){
long long int res =check(x[i],y[i],c[i],x[j],y[j],c[j]);
//cout << res << endl;
if(res != -1){
v.push_back({res,{i,j}});
}
}
}
sort(v.begin(), v.end());
for(int i = 0; i < v.size(); i++){
pair<int,int> x = v[i].second;
int x1 = x.first;
int x2 = x.second;
if(disa[x1] >= v[i].first and disa[x2] >= v[i].first){
disa[x1] = v[i].first;
disa[x2] = v[i].first;
}
}
for(int i = 0; i < n; i++){
if(disa[i] == INF){
cout << i + 1 << endl;
}
}
}
Compilation message (stderr)
Main.cpp: In function 'int main()':
Main.cpp:125:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<long long int, std::pair<int, int> > >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
125 | for(int i = 0; i < v.size(); i++){
| ~~^~~~~~~~~~
# | 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... |