Skip to content

Commit 9f52b0e

Browse files
authored
Create 2463.Minimum-Total-Distance-Traveled.cpp
1 parent bb8b9f8 commit 9f52b0e

File tree

1 file changed

+44
-0
lines changed

1 file changed

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

0 commit comments

Comments
 (0)