列表

详情


NC53389. Forsaken给学生分组

描述

        Forsaken有个学生,每个学生都有一个能力值,为了方便管理,Forsaken决定将个学生分成组。
        Forsaken认为如果一个小组有一个能力在该小组极其突出的学生,这个小组就比较容易管理。我们定义对于来说,这个小组的管理方便度。Forsaken现在想知道

输入描述

第一行两个整数分别为
第二行个数分别代表

输出描述

一个整数表示最大的管理方便度之和。

示例1

输入:

5 1
10 6 2 7 9

输出:

8

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++14(g++5.4) 解法, 执行用时: 58ms, 内存消耗: 872K, 提交时间: 2019-10-25 19:17:40

#include<bits/stdc++.h>
using namespace std;
int n,m;
long long ans;
int a[200001];
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=m;i++)
	{
		ans+=a[n-i+1]-a[i];
	}
	cout<<ans;
}

C++11(clang++ 3.9) 解法, 执行用时: 83ms, 内存消耗: 2092K, 提交时间: 2020-02-25 20:29:41

#include<bits/stdc++.h>
using namespace std;
long a[1000005];
int main()
{
	long long n,k,i,s=0;
	cin>>n>>k;
	for(i=0;i<n;i++)
	cin>>a[i];
	sort(a,a+n);
	for(i=0;i<k;i++)
	{
		s+=a[n-i-1]-a[i];
	}
	cout<<s;
	return 0;
}

Python3(3.5.2) 解法, 执行用时: 197ms, 内存消耗: 14528K, 提交时间: 2019-10-25 19:57:34

n, k = list(map(int, input().split()))
a = list(map(int, input().split()))
a.sort()
ans = 0
for i in range(k):
    ans += a[n - i - 1] - a[i]
print(ans)

上一题