Skip to content

Commit d67afd7

Browse files
authored
Create Minimum Total Distance Traveled.cpp
1 parent bfd48cf commit d67afd7

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
//2463. Minimum Total Distance Traveled
2+
class Solution {
3+
public:
4+
typedef long long ll;
5+
int n, m;
6+
vector<vector<int>>factories;
7+
vector<int>robots;
8+
vector<vector<vector<ll>>>dp;
9+
10+
ll findAns(int i, int j, int k){
11+
if(i == n)
12+
return 0;
13+
if(j == m)
14+
return 1e18;
15+
if(dp[i][j][k] != -1e18)
16+
return dp[i][j][k];
17+
ll val1 = findAns(i, j+1, 0);
18+
ll val2 = 1e18;
19+
if(k < factories[j][1]){
20+
val2 = abs(factories[j][0] - robots[i]) + findAns(i+1, j, k+1);
21+
}
22+
return dp[i][j][k] = min(val1, val2);
23+
}
24+
25+
long long minimumTotalDistance(vector<int>& robot, vector<vector<int>>& factory) {
26+
robots = robot;
27+
factories = factory;
28+
n = robot.size();
29+
m = factory.size();
30+
dp.assign(n, vector<vector<ll>>(m, vector<ll>(n, -1e18)));
31+
sort(robots.begin(), robots.end());
32+
sort(factories.begin(), factories.end());
33+
return findAns(0, 0, 0);
34+
}
35+
};

0 commit comments

Comments
 (0)