本文主要是介绍2246: 【区赛】【宁波32届小学生】最佳交换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
题目描述
输入
输出
样例输入
样例输出
提示
代码
题目描述
星星小朋友和 N-1 个小伙伴一起玩了一上午的纸牌游戏,星星总是能赢,气焰嚣张, 小伙伴们决定出道纸牌问题难倒星星,让他别再狂妄自大了,问题是这样的:每人摸一张牌, 每张牌上写着某一个数字,然后规定若干对伙伴间交换纸牌(每个小伙伴只允许交换一次), 交换得分就是大的纸牌值减去小的纸牌值,若干次得分加起来和最大是多少? 可是小伙伴们忘记了星星学过编程,请你和他一起来用程序解决这个问题吧。
输入
第一行两个用空格隔开的正整数 M,N,分别表示交换次数和总人数(星星也算在内)
第二行 N 个用空格隔开的正整数 ai
输出
一个正整数,表示最大得分值
样例输入
1 5 3 7 2 1 6
样例输出
6
提示
【样例输入 1】
1 5
3 7 2 1 6
【样例输出 1】
6
【样例输入 2】
2 5
3 7 2 1 6
【样例输出 2】
10
【数据范围】
60%的数据中 M=1
80%的数据中 M≤2
100%的数据 M≤3,N≤100,ai≤1000
代码
#include<bits/stdc++.h>
using namespace std;
int main(){int a,b,c[100005],he=0;cin>>a>>b;for(int i=0;i<b;i++){cin>>c[i];}sort(c,c+b);for(int i=0;i<a;i++){he+=abs(c[i]-c[b-i-1]);}cout<<he;return 0;
}
这篇关于2246: 【区赛】【宁波32届小学生】最佳交换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!