Tilechng
#include<bits/stdc++.h>
using namespace std;
int n,m,t,sum;
int a;
int dp[11][11111];
//dp[i][j]:选到第i时候为j的最小代价
int main() {
cin>>n>>m;
memset(dp,125,sizeof(dp));
dp[0][0]=0;
for(int i=1;i<=n;i++) {
cin>>a;
for(int j=0;j<=m;j++) {
for(int k=0;k*k<=j;k++) {//变到 K
dp[i][j]=min(dp[i][j],dp[i-1][j-k*k]+(a-k)*(a-k));
}
}
}
if(dp[n][m]>=1090000) {
cout<<-1;
}
else {
cout<<dp[n][m];
}
return 0;
}

浙公网安备 33010602011771号