Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <algorithm>
- #include <climits>
- using namespace std;
- int a[1000],c[1000],n;
- int process(long long int mask,int prev)
- {
- int i,j,ans,sum;
- ans=INT_MAX;
- long long int tmp;
- for(i=0;i<n;i++)
- {
- if((mask&(1<<i))>0)
- continue;
- tmp=(mask|(1<<i));
- sum=process(tmp,a[i]);
- sum+=(abs(a[i]-prev))*c[i];
- ans=min(ans,sum);
- }
- if(ans==INT_MAX)
- return 0;
- return ans;
- }
- int main()
- {
- int t,i,j,x,ans;
- freopen("example.txt","r",stdin);
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d",&n);
- for(i=0;i<n;i++)
- scanf("%d",&a[i]);
- for(i=0;i<n;i++)
- scanf("%d",&c[i]);
- ans=INT_MAX;
- for(i=0;i<n;i++)
- {
- x=process(((long long int)1<<i),a[i]);
- ans=min(ans,x);
- }
- cout<<ans<<endl;
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment