测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A65984. 完善程序:给定一个长度为n且从小到大排好序的序列{a1,a2,a3,...,an},要把这个序列分成 k 段,每段的价值为该段中的最大值减去最小值,现在请你帮忙分段,使得各分段的价值之和最小(保证计算结果都在int范围内)。#include <bits/stdc++.h>

编程题

题目描述

完善程序:给定一个长度为n且从小到大排好序的序列{a1,a2,a3,...,an},要把这个序列分成 k 段,每段的价值为该段中的最大值减去最小值,现在请你帮忙分段,使得各分段的价值之和最小(保证计算结果都在int范围内)。

#include <bits/stdc++.h>
using namespace std;
const int N=3e5+5;
int n,k,sum,a[N],b[N];
int main()
{
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    for(int i=1;i<n;i++) b[i]=      ①   ;
        if(    ②   )
            printf("0\n");
        else if(k==1)
            ③
        else
    {
        sort(b+1,b+n);
        sum=0;
        for(int i=1;i<=       ④   ;i++)
            printf("%d\n",sum);
        }
    return 0;
}