Codeforces Round #577 (Div. 2)B. Zero Array

You are given an array a1,a2,,ana1,a2,…,an.

In one operation you can choose two elements aiai and ajaj (iji≠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 (2n1052≤n≤105) — the size of the array.

The second line contains nn integers a1,a2,,ana1,a2,…,an (1ai1091≤ai≤109) — the elements of the array.

Output

Print "YES" if it is possible to make all elements zero, otherwise print "NO".

题意大概就是给n个数,经过多次操作(选2个数减1)让n个数全部变为0,能得话yes,不行的话no
一开始想的话,就是把所有的数加起来,再半段这个数是不是偶数,如果是偶数就是yes,反之则是no
自信一交,果然wa,然后自己编了个1 4 9 按照我的代码,应该是yes,但显然是no,但我已经停止思考了 ,于是放弃了
其实只要加个条件就可以了,判断no还有一个条件就是数里面的最大的数大于总和的一半,emmm,这很好想。。。代码如下

#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
const double PI=3.1415926535897931;
const long long sale=1e9+10;
const int MA= 1e7+10;
const int ma= 2*1e5+10;
const int few=1e3+10;
using namespace std;
//////////////////////////////////////////////
int main()
{
int n;
cin>>n;
long long sum=0,maxx=-1,a;
for(int i=0; i<n; i++)
{
cin>>a;
maxx=max(maxx,a);
sum+=a;
}
if(maxx>sum/2||(sum%2))
cout<<"NO"<<endl;
else
cout<<"YES"<<endl;
return 0;
}

猜你喜欢

转载自www.cnblogs.com/Aracne/p/12189326.html