玄关
#include<bits/stdc++.h>
#define int long long
using namespace std;
int m,n,p[100][100],s[100],ans[100],f[100][5050];
struct data{
int num,g;
}a[100];
bool cmp(data a,data b){
return a.g>b.g;
}
void solve(int x,int y){
if(!x){
return ;
}
for(int i=1;i<=x;i++){
a[i].g++;
}
solve(p[x][y],y-x);
}
signed main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].g;
a[i].num=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
s[i]=s[i-1]+a[i].g;
}
memset(f,0x3f,sizeof f);
f[0][0]=0;
for(int i=1;i<=n;i++){
for(int j=i;j<=m;j++){
for(int k=0;k<=i;k++){
int tmp=f[k][j-i]+(s[i]-s[k])*k;
if(tmp<f[i][j]){
f[i][j]=tmp,p[i][j]=k;
}
}
}
}
cout<<f[n][m]<<endl;
for(int i=1;i<=n;i++){
a[i].g=0;
}
solve(n,m);
for(int i=1;i<=n;i++){
ans[a[i].num]=a[i].g;
}
for(int i=1;i<=n;i++){
cout<<ans[i]<<" ";
}
return 0;
}