CF1197C
Значение вопросов:
Приращение ряд колонн, она разделена на к секции, метод, чтобы найти такие сегменты, то есть каждый минимальный сегмент и максимальное значение минус минимальное
Решение:
В К секции, т.е. увеличить K-1 раздел, в котором разбиение к-1, может быть отделен от некоторых из крупнейших разницей, что последний минимальная разница максимальный период после каждого разделения и наименьшее
КОД:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
#define LL long long
const int N = 3e5 + 100;
int n,a[N],k;
vector<int> G;
int main() {
scanf("%d%d",&n,&k);
for(int i = 1 ; i <= n ; ++i)
scanf("%d",&a[i]);
for(int i = 2 ; i <= n ; ++i)
G.push_back(a[i - 1] - a[i]);
sort(G.begin(), G.end());
int ans = a[n] - a[1];
for(int i = 0 ; i < k - 1 ; ++i) ans += G[i];
printf("%d",ans);
//system("pause");
return 0;
}