#include #include #include #include using namespace std; const int MAXN=1010; int a[MAXN]; int sum[MAXN]; int cost[MAXN]; int q[MAXN]; int head,tail; int n,m; int dp[MAXN][MAXN]; int DP() { for(int i=1;i<=n;i++) { dp[i][0]=cost[i]; dp[i][i-1]=0; } for(int j=1;j<=m;j++) { head=tail=0; q[tail++]=j; for(int i=j+1;i<=n;i++) { while(head+1=(y3-y2)*(x2-x1))tail--; else break; } q[tail++]=i; } } return dp[n][m]; } int main() { while(scanf("%d%d",&n,&m)==2) { if(n==0&&m==0)break; sum[0]=0; cost[0]=0; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); sum[i]=sum[i-1]+a[i]; cost[i]=cost[i-1]+sum[i-1]*a[i]; } printf("%d\n",DP()); } return 0; }