Description
给定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
Sample Output
12
分析
大水题,直接加起来,然后看一下答案是不是奇数,如果是的话把最小的那个奇数减去就好啦
代码
#include <bits/stdc++.h>
#define N 1000005
#define INF 0x7fffffff
int a[N];
int main()
{
int n;
scanf("%d",&n);
for (int i = 1; i <= n; i++)
scanf("%d",&a[i]);
if (n == 1 && a[1] % 2 == 1)
{
printf("NIESTETY\n");
return 0;
}
int mn = INF;
int ans = 0;
for (int i = 1; i <= n; i++)
{
ans += a[i];
if (a[i] % 2 == 1)
mn = std::min(mn, a[i]);
}
if (ans % 2 == 1)
ans -= mn;
printf("%d\n",ans);
}