This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 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... |
# | 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... |