Skip to content

Commit f3a6642

Browse files
authored
Create 2463. Minimum Total Distance Traveled (#622)
2 parents 38eedb1 + 26eb0e7 commit f3a6642

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

2463. Minimum Total Distance Traveled

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
class Solution {
2+
public:
3+
vector<vector<long long>> dp;
4+
5+
long long fn(int i, int j, vector<int>& robot, vector<int>& factory){
6+
//i -> robot index
7+
//j -> factor index
8+
9+
if(i >= robot.size()){
10+
return 0;
11+
}
12+
13+
if(j >= factory.size()){
14+
return LLONG_MAX;
15+
}
16+
17+
if(dp[i][j] != -1) return dp[i][j];
18+
19+
long long a = fn(i+1, j+1, robot, factory);
20+
if(a != LLONG_MAX){
21+
a += abs(robot[i] - factory[j]);
22+
}
23+
24+
long long b = fn(i, j+1, robot, factory);
25+
26+
return dp[i][j] = min(a, b);
27+
}
28+
29+
long long minimumTotalDistance(vector<int>& robot, vector<vector<int>>& factory) {
30+
sort(robot.begin(), robot.end());
31+
sort(factory.begin(), factory.end());
32+
33+
vector<int> v;
34+
for(auto& fac : factory){
35+
while(fac[1]--){
36+
v.push_back(fac[0]);
37+
}
38+
}
39+
40+
dp.resize(robot.size()+1, vector<long long>(v.size()+1, -1));
41+
42+
return fn(0, 0, robot, v);
43+
}
44+
};

0 commit comments

Comments
 (0)