【有奖励】大家来看看这到题咋做

C++

题目描述

土豪老王有两个儿子,大王和小王,他想把自己的所有资产尽量平均地分配给兄弟俩,如果不能平分,大王会多分一些

老王总共有n项可以分配的资产,每项资产有一个价值,不可分割只能完全属于一个人。

现在老王想知道,如果尽量进行平均分配的话,大王和小王能得到的资产的差最小是多少。

输入格式

第一行一个整数n,表示有n项资产 第二行n个整数a[i],表示每项资产的价值

输出格式

一个整数,表示答案

输入输出样例

输入 #1


```c++
5
1 2 3 4 5

输出 #1


```c++
1

说明/提示

0<n<100,0<a[i]<100

如果将3,4分配给一个人,其他的分配给另一人,那么两人得到的资产总和分别为7和8,差为1。分配方式可能不唯一,但没有更好的答案。

输入为:

5

1 2 3 4 5

输出为:

1

如果真的有奖励 我明天就帮你做


#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    int n,a[100],sum=0,mid;
    cin >> n;
    for(int i=0; i<n; i++)
        cin >> a[i];
    for(int* p=a; p<a+n; p++)
        sum+=*p;
    mid=sum/2;
    int temp,sum1=0,sum2=0,count;
    for(int j=0; j<n; j++)
    {
        temp=mid;
        for(int i=0; i<n; i++)
            if(abs(mid-a[i])<temp)
            {
                temp=abs(mid-a[i]);
                count=i;
            }
        if(sum1<=sum2)
            sum1+=a[count];
        else
            sum2+=a[count];
        a[count]=0;
    }
    cout << abs(sum1-sum2) << endl;
    return 0;
}