#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), swap(xx1, xx2);
} else {
if(xx1 > xx2) swap(xx1, xx2), swap(yy1, yy2);
}
lns.emplace_back(xx1, yy1, xx2, yy2);
}
sort(lns.begin(), lns.end(), [](line a, line b){
if(abs(a.gety()-b.gety())>=1e-9) 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
roads.cpp: In function 'int main()':
roads.cpp:37:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<line>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
37 | for(int i=1;i<lns.size();i++) cout << lns[i-1].b << ' ' << lns[i].a << '\n';
| ~^~~~~~~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Failed |
1 ms |
212 KB |
Condition failed: "pf == Sline.end() || !Cross(S[*pi], S[*pf])" |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
296 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
2 ms |
340 KB |
Output is correct |
4 |
Correct |
13 ms |
972 KB |
Output is correct |
5 |
Correct |
28 ms |
1420 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
2 ms |
340 KB |
Output is correct |
4 |
Correct |
13 ms |
880 KB |
Output is correct |
5 |
Correct |
25 ms |
1396 KB |
Output is correct |
6 |
Correct |
0 ms |
212 KB |
Output is correct |
7 |
Correct |
1 ms |
212 KB |
Output is correct |
8 |
Correct |
2 ms |
340 KB |
Output is correct |
9 |
Correct |
14 ms |
1148 KB |
Output is correct |
10 |
Correct |
136 ms |
7800 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
2 |
Correct |
1 ms |
212 KB |
Output is correct |
3 |
Correct |
2 ms |
348 KB |
Output is correct |
4 |
Correct |
13 ms |
1112 KB |
Output is correct |
5 |
Correct |
27 ms |
1356 KB |
Output is correct |
6 |
Failed |
1 ms |
296 KB |
Condition failed: "pf == Sline.end() || !Cross(S[*pa], S[*pf])" |
7 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Failed |
0 ms |
296 KB |
Condition failed: "pf == Sline.end() || !Cross(S[*pi], S[*pf])" |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Failed |
0 ms |
212 KB |
Condition failed: "pf == Sline.end() || !Cross(S[*pi], S[*pf])" |
2 |
Halted |
0 ms |
0 KB |
- |