AcWing1603整数セット除算

タイトルの説明:
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;
}

 

おすすめ

転載: blog.csdn.net/weixin_44620183/article/details/113632054