B

作者: Celia_QAQ | 来源:发表于2019-04-10 17:25 被阅读0次

Polycarp has an array aa consisting of nn integers.

He wants to play a game with this array. The game consists of several moves. On the first move he chooses any element and deletes it (after the first move the array contains n−1n−1 elements). For each of the next moves he chooses any element with the only restriction: its parity should differ from the parity of the element deleted on the previous move. In other words, he alternates parities (even-odd-even-odd-... or odd-even-odd-even-...) of the removed elements. Polycarp stops if he can't make a move.

Formally:

If it is the first move, he chooses any element and deletes it;

If it is the second or any next move:

if the last deleted element was odd, Polycarp chooses any even element and deletes it;

if the last deleted element was even, Polycarp chooses any odd element and deletes it.

If after some move Polycarp cannot make a move, the game ends.

Polycarp's goal is to minimize the sum of non-deleted elements of the array after end of the game. If Polycarp can delete the whole array, then the sum of non-deletedelements is zero.

Help Polycarp find this value.

Input

The first line of the input contains one integer nn (1≤n≤20001≤n≤2000) — the number of elements of aa.

The second line of the input contains nn integers a1,a2,…,ana1,a2,…,an (0≤ai≤1060≤ai≤106), where aiaiis the ii-th element of aa.

Output

Print one integer — the minimum possible sum of non-deleted elements of the array after end of the game.

Examples

Input

5

1 5 7 8 2

Output

0

Input

6

5 1 2 4 6 3

Output

0

Input

2

1000000 1000000

Output

1000000

Codeforces Round #550 (Div. 3)B. Parity Alternated Deletions - nuoyanli的博客 - CSDN博客

B. Parity Alternated Deletions - weixin_44417851的博客 - CSDN博

题意:给定一个数组,进行操作每次删除一个数,但是删除的数的奇偶性必须要与上次删除的相反,求删除后剩下的数最小的和; 思路:输入的时候记录一下奇数和偶数的个数,首先如果奇数等于偶数,或者奇数和偶数个数相差为1个,那么可以全部删除,答案就是0,其余情况,遍历数组,奇数和偶数都删除奇偶个数之差个数,就ok了 --------------------- 作者:nuoyanli 来源:CSDN 原文:https://blog.csdn.net/nuoyanli/article/details/88942205 版权声明:本文为博主原创文章,转载请附上博文链接!

计量偶数与奇数分别有多少个,并且单独储存,当奇数偶数数量相同时,输出0,不相等让把多的那个的数加到sum里(加数量差并减去第一次任意删除的那一个)


#include<cstdio>

#include<cstdlib>

#include<cstring>

#include<cmath>

#include<ctime>

#include<string>

#include<stack>

#include<queue>

#include<map>

#include<vector>

#include<set>

#include<iostream>

#include<algorithm>

#define N 2005

#define ll long long

using namespace std;

int main() {

int n;

int a[N];

cin>>n;

int t=0,s=0;

for(int i=0;i<n;i++){

cin>>a[i];

if(a[i]%2==0)

t++;

else s++;

}

if(t==s||(abs(t-s)==1)){

cout<<"0"<<endl;

return 0;

}

sort(a,a+n);

if(t>s){

ll sum=0;

int l=t-s-1;

for(int i=0;i<n;i++){

if(a[i]%2==0){

sum+=a[i];

l--;

}

if(l==0)break;

}

cout<<sum<<endl;

}

if(s>t){

ll sum=0;

int l=s-t-1;

for(int i=0;i<n;i++){

if(a[i]%2!=0){

sum+=a[i];

l--;

}

if(l==0)

break;

}

cout<<sum<<endl;

}

}

相关文章

  • Bā Bá Bǎ 爸

    七岁那年的我对什么都很好奇,却唯独不好奇巴掌。 但它还是呼在了我的脸上。 横竖都是一百八的人的巴掌像个充血的铁钯。...

  • 【a, b = b, a +b】Python

    生成斐波那契数列中存在一个不太常见的赋值方式 a, b = b, a+b 在上面的代码中,a, b = b, a+...

  • B b

    50.sich(+für+bei)bedanken 表示感谢 51. den Bedarf an etw.(D)d...

  • B·B

    你遮住我的双眼,告诫我, 外面的世界很黑暗, 我只有在你的庇护下才能成长。 我嘴唇被针缝锁, 说不出一句话, 一天...

  • B.B.B(BigBabyBaby)

    分享Dalshabet的单曲《B.B.B (Big Baby Baby)》:http://music.163.co...

  • python a,b=b,a+b

    a,b=b,a+b 可以拆成 a = b和b = a + b 也就是说等号左边的第一个位置的等于等号右边的第一个位...

  • 1-B-B-B

    他一把把你拉上车。你刚坐稳,马车又扭动了起来。 "Actually, It's only a few minute...

  • python的 a,b=b,a+b 和 a=b b=a+b 的区

    Python中a,b = b , b +a 与 a = b b = a +b 输出的结果是不同的 发现新大陆了,是...

  • Mon bébé

    最近在学法语,学到的第一个短语是mon bébé 我第一个想到的人是你 我想我完蛋了 希望未来的我能够不后悔 ai...

  • B/B+树/B*树

    一、 B树 1. 为什么需要B树 在大规模数据存储中,需要用到索引来加快数据查找,当数据非常之大的时候,采用二叉查...

网友评论

      本文标题:B

      本文链接:https://www.haomeiwen.com/subject/zdlwiqtx.html