You are given an array a_1, a_2, \ldots, a_na1,a2,...,an.
In one operation you can choose two elements a_iai and a_jaj (i \ne ji=j) and decrease each of them by one.
You need to check whether it is possible to make all the elements equal to zero or not.
Input
The first line contains a single integer nn (2 \le n \le 10^52≤n≤105) --- the size of the array.
The second line contains nn integers a_1, a_2, \ldots, a_na1,a2,...,an (1 \le a_i \le 10^91≤ai≤109) --- the elements of the array.
Output
Print "YES" if it is possible to make all elements zero, otherwise print "NO".
Sample 1
Inputcopy | Outputcopy |
---|---|
4 1 1 2 2 |
YES |
Sample 2
Inputcopy | Outputcopy |
---|---|
6 1 2 3 4 5 6 |
NO |
Note
In the first example, you can make all elements equal to zero in 33 operations:
- Decrease a_1a1 and a_2a2,
- Decrease a_3a3 and a_4a4,
- Decrease a_3a3 and a_4a4
In the second example, one can show that it is impossible to make all elements equal to zero.
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll n;
ll sum = 0;
int main()
{
ll maxnum = 0;
cin >> n;
for (ll i = 0; i < n; i++)
{
ll num;
cin >> num;
sum += num;
maxnum = max(maxnum, num);
}
//因为是成对成对的减少,所以总数首先是偶数。其次还要满足最大的数小于等于总数的一半,这样才能保证最大的数消去
if (sum % 2 == 0&&maxnum <= sum / 2) cout << "YES" << endl;
else cout << "NO" << endl;
}