Today, Wet Shark is given n integers. Using any of these integers no more than once, Wet Shark wants to get maximum possible even (divisible by 2) sum. Please, calculate this value for Wet Shark.
Note, that if Wet Shark uses no integers from the n integers, the sum is an even integer 0.
The first line of the input contains one integer, n (1 ≤ n ≤ 100 000). The next line contains n space separated integers given to Wet Shark. Each of these integers is in range from 1 to 109, inclusive.
Print the maximum possible even sum that can be obtained if we use some of the given integers.
3 1 2 3
6
5 999999999 999999999 999999999 999999999 999999999
3999999996
In the first sample, we can simply take all three integers for a total sum of 6.
In the second sample Wet Shark should take any four out of five integers 999 999 999.
题意
从n个数中选任意个,使得和为最大偶数
思路
偶数一定选,奇数如果有偶数个就都选,奇数个就先都选上再减掉最小的那一个
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main()
{
ll n,i,x,ans,m,minn = 0x3f3f3f3f;
while(cin>>n)
{
ans = 0;
m = 0;
for(i=0;i<n;i++)
{
scanf("%lld",&x);
if(x%2==0)
ans+=x;
else
{
m++;
ans += x;
minn = min(minn,x);
}
}
if(m%2==1)
ans -= minn;
printf("%lld\n",ans);
}
return 0;
}
本文介绍了一道算法题目,任务是从给定的整数集合中选择若干个数,使得它们的总和为最大的偶数值。文章给出了具体的实现代码,并解释了其背后的逻辑:优选所有偶数并尽可能包含奇数,但在奇数个奇数的情况下,需要排除最小的奇数以确保总和为偶数。
438

被折叠的 条评论
为什么被折叠?



