PAT 甲级 刷题日记|A 1113 Integer Set Partition (25 分)

单词积累

disjoint 打散 拆开

思路

分成两个集合,数量之差最小,总和之差尽可能大。排序后平分即可

代码

#include <bits/stdc++.h>
using namespace std;

const int maxn = 100003;
int n;
int num[maxn];

int main() {
    cin>>n;
    for (int i = 0; i < n; i++) {
        cin>>num[i];
    }
    sort(num, num + n);
    if (n % 2 == 1) cout<<1<<" ";
    else cout<<0<<" ";
    int ans1 = 0, ans2 = 0;
    for (int i = 0; i < n / 2; i++) {
        ans1 += num[i];
    }
    for (int i = n / 2; i < n; i++) {
        ans2 += num[i];
    }
    cout<<ans2-ans1<<endl;
} 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容