1113 Integer Set Partition

题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805357258326016

大致题意:给出一个包含n个正整数的集合,把集合分成s1,s2,n1,n2分别是s1,s2的元素个数。要求输出 最小|n1-n2|,最大|s1-s2|。

思路:先把集合中的n个元素按从小到大排序,那么把集合对半分成两个集合即可。。。。

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<vector>
 4 using namespace std;
 5 
 6 int main() {
 7     int n;
 8     cin>>n;
 9     vector<int> v(n);
10     for(int i = 0; i < n; ++i) cin>>v[i];
11     sort(v.begin(),v.end());
12     int s1 = 0,s2 = 0;
13     for(int i = 0; i < n; ++i) {
14         if(i < n/2) s1+= v[i];
15         else s2 += v[i];
16     }
17     printf("%d %d",n%2,s2-s1);
18     return 0;
19 }

 

posted @ 2020-03-21 11:37  tangq123  阅读(154)  评论(0)    收藏  举报