#include <bits/stdc++.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
long long N; cin >> N;
vector<array<long long, 4>> lines(N);
for (long long i = 0; i < N; i++) {
cin >> lines[i][0] >> lines[i][1] >> lines[i][2] >> lines[i][3];
}
pair<long long, long long> dir;
dir = {lines[0][2]-lines[0][0], lines[0][3]-lines[0][1]};
pair<long long, long long> perp = {dir.second, -dir.first};
auto r = [&] (array<long long, 4> &a) -> array<long long,4> {
array<long long, 4> fa;
fa[1] = dir.first*a[0]+dir.second*a[1];
fa[0] = perp.first*a[0]+perp.second*a[1];
fa[3] = dir.first*a[2]+dir.second*a[3];
fa[2] = perp.first*a[2]+perp.second*a[3];
if (fa[1] > fa[3]) {
swap(fa[0], fa[2]);
swap(fa[1], fa[3]);
}
return fa;
};
for (int i = 0; i < N; i++) array<long long, 4> _ = r(lines[i]);
sort(lines.begin(), lines.end(), [&](array<long long, 4> &a, array<long long, 4> &b) {
array<long long, 4> fa = r(a), fb = r(b);
return fa < fb;
});
for (long long i = 0; i < N-1; i++) {
cout << lines[i][2] << " " << lines[i][3] << " " <<
lines[i+1][0] << " " << lines[i+1][1] << "\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... |