题意
将给定的数分成两个集合,要求集合的基数差值最小,集合中各元素之和差值最大
源码
#include<iostream>
#include<cstring>
#include<algorithm>
#define arrInit(a,b) memset(a,b,sizeof(a))
using namespace std;
int main(){
int n;
cin>>n;
int number[100005];
arrInit(number,0);
for(int i=1;i<=n;i++) cin>>number[i];
int l,r;
if(n%2==0){
l=1;r=n;
}else{
l=0;r=n;
}
sort(number+l,number+r+1);
int sum=0;
for(int i=0;i<(r-l+1)/2;i++){
sum+=number[r-i]-number[l+i];
}
cout<<(l+1)%2<<" "<<sum;
}