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 "wiring.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+10;
int n, m;
int r[N], b[N];
ll dp[205][205];
long long min_total_length(std::vector<int> r_, std::vector<int> b_) {
n = r_.size(); m = b_.size();
for(int i = 0; i < n; i++) r[i] = r_[i];
for(int i = 0; i < m; i++) b[i] = b_[i];
if(max(n,m) <= 200) {
for(int i = 1; i < 205; i++)
dp[0][i] = dp[i][0] = (ll)1e18;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= m; j++) {
dp[i][j] = abs(r[i-1] - b[j-1]) + min({dp[i-1][j], dp[i][j-1], dp[i-1][j-1]});
}
}
return dp[n][m];
}
ll ret = 0;
if(n <= m) {
for(int i = 0; i < m; i++)
ret += (b[i] - (i >= n ? r[n-1] : r[i]));
}
else {
for(int i = n-1; i >= 0; i--)
ret += ((i >= m ? b[0] : b[i]) - r[i]);
}
return ret;
}
# | 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... |