#深信服9.14笔试题-C/C++客户端-第2题
问题描述:
两熊分蜜
吵架分家;
要求:
- 尽可能的重量均分,至少自己能少的最少;
- 在罐子数量上差距不能超过1。
输入描述:
- 每一行给出蜜罐的数量,2<= n <= 100
- 每蜜罐的重量 1< M <= 500
输出描述:
两个数字A B 分别表示熊大和熊二能分到蜜的总重
示例1:
输入:
3
447
56
249
输出:
305 447
代码实现
#深信服笔试题##深信服##笔经##include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> vec;
int num_A = 0, num_B = 0;
int n;
cin >> n;
while (n--)
{
int m;
cin >> m;
vec.push_back(m);
}
sort(vec.begin(), vec.end());
//判断奇偶数
int cnt = 0;
if (vec.size() % 2 == 0) {
cnt = vec.size() / 2;
}
else {
cnt = (vec.size() + 1) / 2;
}
int sum = 0; //总和
//求平均数
for (int i = 0; i < vec.size(); i++) {
sum += vec[i]; //总数
}
double sum_half;
sum_half = sum / 2.0; //均值
int Diss = INT_MAX; //差值
int result = 0;
for (int i = 0; i < cnt;i++) {
int k = cnt;
double temp = 0; //临时总量
int diss = 0;
int left = i, right = i + k -1;
while (k--) {
temp += vec[right--];
}
if (abs(sum_half - temp) < Diss){
Diss = abs(sum_half - temp);
result = temp;
}
}
cout << result << " " << sum - result;
return 0;
}


