제출 #464708

#제출 시각아이디문제언어결과실행 시간메모리
464708Hamed5001Cipele (COCI18_cipele)C++14
63 / 90
506 ms106764 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
/*
	dp[i] = min ugliness if I paired first i shoes
	dp[i] = 
*/
const int mxN = 5010;
int N, M;
vector<int> A1, A2;

void solve1() {
	int ans = 0;
	for (int i = 0; i < N; i++) {
		ans = max(ans, abs(A1[i]-A2[i]));
	}
	cout << ans;
}

int dp[mxN][mxN];

int fun(int i, int j) {
	if (i == N)
		return 0;
	if (j == M)
		return INT_MAX;
	int &ret = dp[i][j];
	if (~ret) return ret;

	ret = min(max(abs(A1[i] - A2[j]), fun(i+1, j+1)), fun(i, j+1));
	return ret;
}

void solve2() {
	memset(dp, -1, sizeof dp);
	cout << fun(0, 0);
}

void solve() {
	cin >> N >> M;
	A1.resize(N); A2.resize(M);
	for (auto& a : A1) cin >> a;
	for (auto& a : A2) cin >> a;
	sort(A1.begin(), A1.end());
	sort(A2.begin(), A2.end());

	if (N == M) {
		solve1();
		return;
	}

	if (N > M) {
		swap(N, M);
		swap(A1, A2);
	}

	solve2();
}

int main() {

	ios_base::sync_with_stdio(false);
	cin.tie(0);
	solve();
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...