Submission #1279797

#TimeUsernameProblemLanguageResultExecution timeMemory
1279797damamilaRoads (CEOI20_roads)C++20
15 / 100
52 ms52508 KiB
#include<bits/stdc++.h>

using namespace std;

signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin >> n;
    vector<tuple<double, int, int, int, int>> lines(n);
    for (int i = 0; i < n; i++) {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        if (y2 < y1) {
            swap (y1, y2);
            swap(x1, x2);
        }
        if (x2 < x1) {
            swap (y1, y2);
            swap(x1, x2);
        }
        double m = (y2-y1);
        if (x2 != x1) m /=(x2-x1);
        double c = y1-m*x1;
        c *= -1;
        if (x1 == x2) c = x1;
        lines[i] = {c, x1, x2, y1, y2};
        // cout << "INFO OTHER " << c << " " << x1 << " " << y1 << " " << x2 << " " << y2 << endl;
    }
    sort(lines.begin(), lines.end());
    int x = get<2>(lines[0]);
    int y = get<4>(lines[0]);
    for (int i = 1; i < n; i++) {
        auto [c, x1, x2, y1, y2] = lines[i];
        cout << x << " " << y << " " << x1 << " " << y1 << "\n";
        x = x2;
        y = y2;
    }
}

//problem is that the wrong vertices are matched so the whole lines overlap
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...