제출 #1172875

#제출 시각아이디문제언어결과실행 시간메모리
1172875Troll321Growing Vegetables is Fun 5 (JOI24_vegetables5)C++20
30 / 100
184 ms2592 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAXN = 3e5 + 5; 
const ll MAX = 1e18;

ll n, ans = MAX, val[MAXN], red[MAXN], blue[MAXN];

ll solve(ll l) {
	ll out = 0;
	vector<ll> rv, bv;
	for (int i = 1; i < l; ++i) {
		rv.push_back(val[i]);
	}
	for (int i = l; i < l+n; ++i) {
		bv.push_back(val[i]);
	}
	for (int i = l+n; i <= 2*n; ++i) {
		rv.push_back(val[i]);
	}

	sort(rv.begin(), rv.end());
	sort(bv.begin(), bv.end());

	for (int i = 0; i < n; ++i) {
		out = max(out, abs(rv[i]-red[i+1]));
		out = max(out, abs(bv[i]-blue[i+1]));
	}

	ll out2 = 0;
	for (int i = 0; i < n; ++i) {
		out2 = max(out2, abs(bv[i]-red[i+1]));
		out2 = max(out2, abs(rv[i]-blue[i+1]));
	}
	return min(out, out2);
}

int main() {
	cin >> n;
	for (int i = 1; i <= 2*n; ++i) {
		cin >> val[i];
	}

	for (int i = 1; i <= n; ++i) {
		cin >> red[i];
	}

	for (int i = 1; i <= n; ++i) {
		cin >> blue[i];
	}

	sort(red+1, red+1+n);
	sort(blue+1, blue+1+n);

	for (int i = 1; i <= n+1; ++i) {
		ans = min(ans, solve(i));
	}
	cout << ans << "\n";
	return 0;
}
#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...