1. 原題:https://www.patest.cn/contests/pat-a-practise/1113
2. 思路:
題意:基本邏輯題。
給出一組整數,劃分成兩部分,使得個數之差最小且和的差最大。
思路:
顯然,直接順序排序,然後均分成兩組,統計和就行了。
已AC。
3. 源碼:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
//freopen("in.txt", "r", stdin);
int N;
cin >> N;
vector<int> v(N);
for (int i = 0; i < N; i++)
{
cin >> v[i];
}
sort(v.begin(), v.end());//升序排序
int sum1, sum2;
sum1 = sum2 = 0;
for (int i = 0; i < N / 2; i++)
{
sum1 += v[i];
}
for (int i = N / 2; i < N; i++)
{
sum2 += v[i];
}
int difference = (N % 2 == 0 ? 0 : 1);//個數差不是0就是1.
cout << difference << ' ' << sum2 - sum1 << endl;
return 0;
}