You are given an array a1,a2,…,ana1,a2,…,an.
In one operation you can choose two elements aiai and ajaj (i≠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≤n≤1052≤n≤105) — the size of the array.
The second line contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤1091≤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; }