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;
int n, xx1, yy1, xx2, yy2;
using pii = pair<int, int>;
struct line {
pii a, b;
line(int ax, int ay, int bx, int by){a={ax,ay};b={bx,by};}
double gety() {
if(a.first == b.first) return -a.first;
return a.second - a.first*(1.00*b.second-a.second)/(b.first-a.first);
}
};
vector<line> lns;
ostream& operator<<(ostream& os, pii a) {
os << a.first << ' ' << a.second;
return os;
}
int main() {
cin >> n;
for(int i=0;i<n;i++) {
cin >> xx1 >> yy1 >> xx2 >> yy2;
if(xx1 == xx2) {
if(yy1 > yy2) swap(yy1, yy2);
} else {
if(xx1 > xx2) swap(xx1, xx2);
}
lns.emplace_back(xx1, yy1, xx2, yy2);
}
sort(lns.begin(), lns.end(), [](line a, line b){
//if(a.a.first == 3 && a.a.second == 4 && b.a.first == 1 && b.a.second == 2) cout << a.gety() << ' ' << b.gety() << '\n';
if(abs(a.gety()-b.gety())>=1e-6) return a.gety() > b.gety();
return a.a < b.a;
});
for(int i=1;i<lns.size();i++) cout << lns[i-1].b << ' ' << lns[i].a << '\n';
}
Compilation message (stderr)
roads.cpp: In function 'int main()':
roads.cpp:38:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<line>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
38 | for(int i=1;i<lns.size();i++) cout << lns[i-1].b << ' ' << lns[i].a << '\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... |