Submission #1216850

#TimeUsernameProblemLanguageResultExecution timeMemory
1216850MateiKing80Roads (CEOI20_roads)C++20
15 / 100
27 ms1608 KiB
#include <bits/extc++.h>

using namespace std;

using ld = long double;
using ll = long long;
#define int ll

using pii = pair<int, int>;
#define fr first
#define sc second


pii pts[200000];
int dx, dy;

bool cmp(pii a, pii b) {
	long double ca = (ld(a.sc) / ld(dy)) * dx + a.fr;
	long double cb = (ld(b.sc) / ld(dy)) * dx + b.fr;
	if (ca == cb)
		return a < b;
	return ca < cb;
}

signed main() {  
	int n;
	cin >> n;
	for (int i = 0; i < 2 * n; i ++)
		cin >> pts[i].fr >> pts[i].sc;
	dx = pts[0].fr - pts[1].fr;
	if (dx < 0)
		for (int i = 0; i < 2 * n; i += 2)
			swap(pts[i], pts[i + 1]);
	dy = pts[0].sc - pts[1].sc;
	int sus = abs(__gcd(dx, dy));
	dx /= sus;
	dy /= sus;
	sort(pts, pts + 2 * n, cmp);
	for (int i = 0; i < n - 1; i ++)
		cout << pts[2 * i + 1].fr << " " << pts[2 * i + 1].sc << " " << pts[2 * i + 2].fr << " " << pts[2 * i + 2].sc << '\n';
}
#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...