タイトルの説明:
N個の正の整数を含むセットがある場合、それを2つのセットA1とA2に分割してください。A1にはn1個の要素が含まれ、A2にはn2個の要素が含まれます。
コレクションには同じ要素を含めることができます。
S1がセットA1のすべての要素の合計を示し、S2がセットA2のすべての要素の合計を示すとします。
| n1-n2 |ができるだけ小さくなり、それに基づいて| S1-S2 |ができるだけ大きくなるように適切に分割してください。
入力フォーマット
最初の行には整数Nが含まれています。
2行目には、N個の正の整数が含まれています。
出力フォーマット
| n1-n2 |と| S1-S2 |を、2つの数値の間のスペースで区切って1行で出力します。
データ範囲
2≤N≤10^ 5。
セット内の各要素とすべての要素の合計が2 ^ 31未満になるようにします。
入力例1:
10
23 8 10 99 46 2333 46 1 666 555
出力サンプル1:
0 3611
入力例2:
13
110 79 218 69 3721 100 29 135 2 6 13 5188 85
出力サンプル2:
1 9359
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAX = 1e5 + 9;
int a[MAX];
int n;
int main()
{
scanf("%d", &n);
for(int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a + n);
int n1, n2, sum1, sum2;
sum1 = sum2 = 0;
n1 = n / 2;
n2 = n - n1;
for(int i = 0; i < n1; i++)
sum1 += a[i];
for(int i = n1; i < n; i++)
sum2 += a[i];
printf("%d %d\n", n2 - n1, sum2 - sum1);
return 0;
}