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就好了.还要加上所有大于零的偶数.
代码如下:
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; }
相关文章推荐
- Educational Codeforces Round 19 B. Odd sum
- Educational Codeforces Round 19 A, B, C, E(xjb)
- Educational Codeforces Round 19 E. Array Queries
- Educational Codeforces Round 19 E. Array Queries
- Educational Codeforces Round 19 A. k-Factorization
- Educational Codeforces Round 19 ABCDE题解
- Educational Codeforces Round 19 E. Array Queries
- Educational Codeforces Round 19
- Educational Codeforces Round 19 C. Minimal string
- Educational Codeforces Round 19 E. Array Queries
- Educational Codeforces Round 19-E. Array Queries
- Educational Codeforces Round 19 A+B+C+E!
- Educational Codeforces Round 19 A
- Educational Codeforces Round 19 ABCDE题解
- Educational Codeforces Round 19 E. Array Queries
- Educational Codeforces Round 19-D. Broken BST
- Educational Codeforces Round 19
- Educational Codeforces Round 19 C. Minimal string
- Educational Codeforces Round 19 E. Array Queries
- 【Educational Codeforces Round 19】