欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

牛客小白月赛18 C. Forsaken给学生分组(思维)

程序员文章站 2022-06-08 18:50:07
...

题目链接:点击这里
牛客小白月赛18 C. Forsaken给学生分组(思维)

牛客小白月赛18 C. Forsaken给学生分组(思维)

保证每一组都是当前最大的减去最小的。

long long:

#include<iostream>
#include<algorithm>
#include<string>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>

using namespace std;
typedef long long ll;
const int MOD = 10000007;
const int INF = 0x3f3f3f3f;
const double PI = acos(-1.0);
const int maxn = 100010;
int a[maxn], b[maxn], n, k;

bool cmp(int a, int b)
{
	return a > b;
}

int main()
{
	scanf("%d%d", &n, &k);
	for(int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
		b[i] = a[i];
	}
	sort(a, a+n);	//从小到大 
	sort(b, b+n, cmp);	//从大到小 
	int cnt = n/2;
	ll ans = 0;
	if(k<=cnt)
		for(int i = 0; i < k ; i++)
			ans += b[i]-a[i];
	else
		for(int i = 0; i < n-k; i++)
			ans += b[i]-a[i];
	printf("%lld\n", ans);
	return 0;
}