From 26eb0e76d3afb70316a344c58cebb89fb84204e9 Mon Sep 17 00:00:00 2001 From: chayan das <110921638+Chayandas07@users.noreply.github.com> Date: Thu, 31 Oct 2024 22:37:17 +0530 Subject: [PATCH] Create 2463. Minimum Total Distance Traveled --- 2463. Minimum Total Distance Traveled | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 2463. Minimum Total Distance Traveled diff --git a/2463. Minimum Total Distance Traveled b/2463. Minimum Total Distance Traveled new file mode 100644 index 0000000..bf13517 --- /dev/null +++ b/2463. Minimum Total Distance Traveled @@ -0,0 +1,44 @@ +class Solution { +public: + vector> dp; + + long long fn(int i, int j, vector& robot, vector& factory){ + //i -> robot index + //j -> factor index + + if(i >= robot.size()){ + return 0; + } + + if(j >= factory.size()){ + return LLONG_MAX; + } + + if(dp[i][j] != -1) return dp[i][j]; + + long long a = fn(i+1, j+1, robot, factory); + if(a != LLONG_MAX){ + a += abs(robot[i] - factory[j]); + } + + long long b = fn(i, j+1, robot, factory); + + return dp[i][j] = min(a, b); + } + + long long minimumTotalDistance(vector& robot, vector>& factory) { + sort(robot.begin(), robot.end()); + sort(factory.begin(), factory.end()); + + vector v; + for(auto& fac : factory){ + while(fac[1]--){ + v.push_back(fac[0]); + } + } + + dp.resize(robot.size()+1, vector(v.size()+1, -1)); + + return fn(0, 0, robot, v); + } +};