template<class S>inlinevoid arrInsert(constint k, int&sz, S a[], const S aval){
int i;
sz++;
for(i=sz-1;i>k;i--){
a[i]= a[i-1];
}
a[k]= aval;
}
template<class S, class T>inlinevoid arrInsert(constint k, int&sz, S a[], const S aval, T b[], const T bval){
int i;
sz++;
for(i=sz-1;i>k;i--){
a[i]= a[i-1];
}
for(i=sz-1;i>k;i--){
b[i]= b[i-1];
}
a[k]= aval;
b[k]= bval;
}
template<class S, class T, class U>inlinevoid arrInsert(constint k, int&sz, S a[], const S aval, T b[], const T bval, U c[], const U cval){
int i;
sz++;
for(i=sz-1;i>k;i--){
a[i]= a[i-1];
}
for(i=sz-1;i>k;i--){
b[i]= b[i-1];
}
for(i=sz-1;i>k;i--){
c[i]= c[i-1];
}
a[k]= aval;
b[k]= bval;
c[k]= cval;
}
template<class S, class T, class U, class V>inlinevoid arrInsert(constint k, int&sz, S a[], const S aval, T b[], const T bval, U c[], const U cval, V d[], const V dval){
int i;
sz++;
for(i=sz-1;i>k;i--){
a[i]= a[i-1];
}
for(i=sz-1;i>k;i--){
b[i]= b[i-1];
}
for(i=sz-1;i>k;i--){
c[i]= c[i-1];
}
for(i=sz-1;i>k;i--){
d[i]= d[i-1];
}
a[k]= aval;
b[k]= bval;
c[k]= cval;
d[k]= dval;
}
template<class S, class T>inline S chmin(S &a, T b){
if(a>b){
a=b;
}
return a;
}
#define main dummy_main
int main(){
return0;
}
#undef main
int dp[100000];
int ls[20];
int lis[20][100000];
int cost[20][100000];
int sz;
int arr[20];
class Solution{
public:
int minimumIncompatibility(vector<int>& A, int K){
int i, mask;
int N = A.size();
int res;
int f;
K = N / K;
sort(A.begin(), A.end());
for(i=(0);i<(N);i++){
ls[i]=0;
}
for(i=(0);i<(1<<N);i++){
int j;
sz =0;
for(j=(0);j<(N);j++){
if(((i)&(1<<(j)))){
arr[sz++]= A[j];
}
}
if(sz != K){
continue;
}
for(j=(0);j<(N);j++){
if(((i)&(1<<(j)))){
f = j;
break;
}
}
for(j=(1);j<(K);j++){
if(arr[j-1]== arr[j]){
goto Q5VJL1cS;
}
}
arrInsert(ls[f], ls[f], lis[f], i, cost[f], arr[K-1]- arr[0]);
Q5VJL1cS:;
}
for(i=(0);i<(1<<N);i++){
dp[i]=1073709056;
}
dp[0]=0;
for(mask=(0);mask<((1<<N)-1);mask++){
if(dp[mask]<1073709056){
for(f=(0);f<(N);f++){
if(!((mask)&(1<<(f)))){
break;
}
}
for(i=(0);i<(ls[f]);i++){
if(!(mask & lis[f][i])){
chmin(dp[mask|lis[f][i]], dp[mask]+ cost[f][i]);
}
}
}
}
res = dp[(1<<N)-1];
if(res==1073709056){
return-1;
}
else{
return res;
}
}
}
;
// cLay version 20201206-1
// --- original code ---
// #define main dummy_main
// {}
// #undef main
//
// int dp[1d5];
// int ls[20], lis[20][1d5], cost[20][1d5];
// int sz, arr[20];
//
// class Solution {
// public:
// int minimumIncompatibility(vector<int>& A, int K) {
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/8/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status