leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

2463.cpp (930B)


0 class Solution {
1 public:
2 long long minimumTotalDistance(vector<int> &robot, vector<vector<int>> &factory) const {
3 sort(begin(factory), end(factory));
4 sort(begin(robot), end(robot));
6 vector<int> positions;
7 for (const auto &f : factory) {
8 for (int i = 0; i < f[1]; i++) {
9 positions.push_back(f[0]);
10 }
11 }
13 const int n = size(robot), m = size(positions);
14 static long long dp[10001];
16 memset(dp, 0x00, sizeof(dp));
17 dp[m] = 1e12;
18 for (int i = n - 1; i >= 0; i--) {
19 long long prev = i != n - 1 ? 1e12 : 0;
20 for (int j = m - 1; j >= 0; j--) {
21 long long assign = abs(robot[i] - positions[j]) + prev;
22 long long skip = dp[j + 1];
24 prev = dp[j];
25 dp[j] = min(assign, skip);
26 }
27 }
29 return dp[0];
30 }
31 };