分析:一开始没看到题目说明的所有数据都为正数,考虑了负数,其实也就多考虑n为奇数时中间的数为正还是负的问题,为正则划到更大数的集合,为负则划到更小数的集合。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn = 1e5+10;
int seq[maxn];
int main(){
// freopen("aa.txt", "r", stdin);
int n, sum = 0, s1 = 0, s2;
ios::sync_with_stdio(false);
cin >> n;
for(int i = 0; i<n; i++){
cin >> seq[i];
sum += seq[i];
}
sort(seq, seq+n);
int mid = n/2;
for(int i = 0; i<mid; i++){
s1 += seq[i];
}
s2 = n%2 ? sum-s1-seq[mid] : sum-s1;
if(n%2){
if(seq[mid] >= 0) s2 += seq[mid];
else s1 += seq[mid];
}
cout << n%2 << " " << s2-s1;
return 0;
}