4291: [PA2015]Kieszonkowe
Time Limit: 1 Sec
Memory Limit: 256 MB
题目连接
http://www.lydsy.com/JudgeOnline/problem.php?id=4291
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
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[];
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
if(n==)
{
if(a[]%==)
printf("NIESTETY\n");
else
printf("%d\n",a[]);
}
else
{
sort(a+,a+n+);
long long sum = ;
for(int i=;i<=n;i++)
sum = sum + a[i];
if(sum % == )
{
printf("%lld\n",sum);
return ;
}
for(int i=;i<=n;i++)
{
if(a[i]%==)
{
printf("%lld\n",sum-a[i]);
return ;
}
}
}
}