➤ Problem Link : MAIN112
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
int arr[n],c[n];
for(int i=0;i<n;i++)
cin>>arr[i];
for(int i=0;i<n;i++)
cin>>c[i];
if(n==1)
{
cout<<"0\n";
continue;
}
ll val=pow(2,n)-1;
ll dp[val+1][n];
for(ll i=0;i<=val;i++)
for(ll j=0;j<n;j++)
dp[i][j]=INT_MAX;
for(int i=0;i<n;i++)
dp[1<<i][i]=0;
ll ans=INT_MAX;
for(ll i=1;i<=val;i++)
{
int cnt=__builtin_popcount(i);
for(ll j=0;j<n;j++)
{
if(!(i & (1<<j)))
continue;
for(ll k=0;k<n;k++)
{
if(i & (1<<k))
continue;
dp[i | (1<<k) ][k]=min(dp[i | (1<<k) ][k],dp[i][j]+abs(arr[k]-arr[j])*c[cnt]);
if(cnt==n-1)
{
ans=min(ans,dp[i | (1<<k) ][k]);
}
}
}
}
cout<<ans<<endl;
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
