➤ 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!!
