BZOJ 4291: [PA2015]Kieszonkowe 水题
4291: [PA2015]Kieszonkowe
Time Limit: 1 Sec
Memory Limit: 256 MB
题目连接
http://www.lydsy.com/JudgeOnline/problem.php?id=4291Description
给定n个数,请从中选出若干个数,使得总和为偶数,请最大化这个总和。
Input
第一行包含一个正整数n(1<=n<=1000000)。
第二行包含n个正整数a_1,a_2,...,a_n(1<=a_i<=1000)。
Output
输出一个正整数,即最大的总和,若无解则输出NIESTETY。
Sample Input
5
2 4 3 3 3
2 4 3 3 3
Sample Output
12
HINT
题意
题解:
无解情况只有一种,那么n=1,a[1]%2==1
有解的话,全部加起来,如果是偶数的话就直接输出
否则就删去一个最小的奇数就好了
代码:
#include<stdio.h> #include<algorithm> using namespace std; int a[1000005]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); if(n==1) { if(a[1]%2==1) printf("NIESTETY\n"); else printf("%d\n",a[1]); } else { sort(a+1,a+n+1); long long sum = 0; for(int i=1;i<=n;i++) sum = sum + a[i]; if(sum % 2 == 0) { printf("%lld\n",sum); return 0; } for(int i=1;i<=n;i++) { if(a[i]%2==1) { printf("%lld\n",sum-a[i]); return 0; } } } }