1
2
3

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;
}

 

posted @ 2020-01-13 21:08  Arance  阅读(137)  评论(0编辑  收藏  举报