#P1005. E. 我是贪心小王
E. 我是贪心小王
E. 我是贪心小王
时间限制:1s
空间限制:256MB
题目描述
给定一个初始长度为 的数组 ,其中所有数都互不相同。
现在要对这个数组进行 次操作,每次需要选择以下两种操作其中一个进行操作:
- 从中取出数组中的 一个 最小值,并将其从数组中删去;
- 从中取出数组中的 一个 最大值,并将其从数组中删去。
你需要计算经过 次操作后,数组剩下的数的和的最大值是多少?
输入格式
第一行两个整数 和 ,分别代表初始数组长度和操作次数;
第二行 个整数,代表数组中的元素,用空格隔开。
输出格式
输出一行整数,代表 次操作剩余数和的最大值。
样例
5 3
4 1 2 8 3
12
解释
删去 后剩下的数的和最大,值为 .
数据范围
对于 的数据:;
对于 的数据:,.
提示
对于 C/C++ 选手,这道题所有数的和加起来可能会超过 32位整数的范围 ,所以结果你需要使用 long long.
另外,在这题中,你可能需要进行排序,可以使用C++自带的sort函数,以下是一个示例用法:
#include <iostream>
#include <algorithm> // 使用sort函数需要导入该头文件
using namespace std;
int main()
{
int a[] = {4, 1, 2, 8, 3};
int n = 5;
sort(a, a+n);
// 第一个参数代表要排序的第一个数的位置
// 第二个参数代表要排序的最后一个数的下一个位置
for(int i=0; i<n; i++)
cout << a[i] << " ";
// 结果为1 2 3 4 8
}
相关
在下列比赛中: