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 }


浙公网安备 33010602011771号