您的位置:首页 > 其它

Educational Codeforces Round 19 B. Odd sum

2017-12-09 21:11 441 查看
time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given sequence a1, a2, …, an of integer numbers of length n. Your task is to find such subsequence that its sum is odd and maximum among all such subsequences. It’s guaranteed that given sequence contains subsequence with odd sum.

Subsequence is a sequence that can be derived from another sequence by deleting some elements without changing the order of the remaining elements.

You should write a program which finds sum of the best subsequence.

Input

The first line contains integer number n (1 ≤ n ≤ 105).

The second line contains n integer numbers a1, a2, …, an ( - 104 ≤ ai ≤ 104). The sequence contains at least one subsequence with odd sum.

Output

Print sum of resulting subseqeuence.

Examples

Input

4

-2 2 -3 1

Output

3

Input

3

2 -5 -3

Output

-1

Note

In the first example sum of the second and the fourth elements is 3.

题解:主要原理是奇数个奇数相加为奇数,偶数个奇数相加为偶数,所以我们找出所有的奇数进行排序之后,先加上最大的奇数,然后每两个奇数相加为正数时,加上这两个奇数,否则直接break就好了.还要加上所有大于零的偶数.

代码如下:

#include <bits/stdc++.h>
#define manx 100005
using namespace std;
bool cmp(int a,int b)
{
return a > b;
}
int main()
{
int a[manx],l,n,x;
while(~scanf("%d",&n)){
memset(a,0,sizeof(a));
l=0;
int sum=0;
for (int i=0; i<n; i++){
scanf("%d",&x);
if (x%2) a[l++]=x; //odd
else if (x > 0) sum+=x;
}
sort(a,a+l,cmp);
sum+=a[0];
for (int i=1; i<l-1; i+=2){
if (a[i] + a[i+1] >= 0) sum+=a[i]+a[i+1];
}
printf("%d\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  codeforces