分析:
设置一个整型数组position[]表示所有区间,假设position[]已将从大到小排好序,(所以,输入区间后,要对区间进行排序)
如果所需线段数m大于等于区间长度n,则线段总长为position[0]-position[m-1]+1。
如果区间长度大于所需线段数,则线段总长减去最大两个相邻区间(用distance[] = position[i] -position[i+1] - 1表示区间间隔,对区间间隔进行从小到大的排序)
当线段总数为N(线段总长大于0)时,即减N-1次的相邻区间数。
#include <stdio.h>
void sort(int value[],int n)
{
int i,j,temp;
for(i = 0;i < n-1;i++)
for(j = 0;j < n-1-i;j++)
if(value[j] < value[j+1])
{
temp = value[j];
value[j] = value[j+1];
value[j+1] = temp;
}
}
int main()
{
int num,amount;
while(scanf("%d %d",&num,&amount) != EOF)
{
int i,sum &#