#include "wiring.h"
#include <bits/stdc++.h>
using namespace std;
#define sig signed
#define int long long
#define arr array
#define vec vector
const int N = 2e3 + 5, M = 2e3 + 5, INF = 1e18;
int n, m;
arr<int, N> a;
arr<int, M> b;
arr<arr<int, M>, N> dp;
void dp_cmp() {
for (int i = 1; i <= n + 1; i++) dp[i].fill(INF);
dp[n + 1][m + 1] = 0;
for (int i = n; i >= 1; i--) {
for (int j = m; j >= 1; j--) {
int cr = 0;
for (int k = i; k <= n; k++) {
cr += abs(a[k] - b[j]);
dp[i][j] = min(dp[i][j], cr + dp[k + 1][j + 1]);
}
cr = 0;
for (int k = j; k <= m; k++) {
cr += abs(b[k] - a[i]);
dp[i][j] = min(dp[i][j], cr + dp[i + 1][k + 1]);
}
}
}
}
int min_total_length(vec<sig> _a, vec<sig> _b) {
n = _a.size(), m = _b.size();
for (int i = 1; i <= n; i++) a[i] = _a[i - 1];
for (int i = 1; i <= m; i++) b[i] = _b[i - 1];
dp_cmp();
return dp[1][1];
}
# | 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... |