DAY1 B. Parity Alternated Deletions

B. Parity Alternated Deletions

time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
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-deleted elements 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 aiai is 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
inputCopy
5
1 5 7 8 2
outputCopy
0
inputCopy
6
5 1 2 4 6 3
outputCopy
0
inputCopy
2
1000000 1000000
outputCopy
1000000

思路&过程

算是模拟吧,奇数一队,偶数一队,最后从小的加,加满差值-1个就是答案。
又是数组下标,循环时忘记是从0开始的,改了一天。。。orz。。。

#include
#include
using namespace std;

int main()
{
	long long n,i,j,ans,m,p,q;
	int a[2010],b[2010];
	cin>>n;
	p=0;q=0;
	for(i=1;i<=n;i++)
	{
		cin>>m;
		if(m%2==0)
		{
			a[p]=m;	
			p=p+1;
		} 
		else
		{
			b[q]=m;
			q=q+1;
		}
	}
	ans=0;
	if((p-q==1)||(q-p==1)||(p==q))cout<<"0"<q)
		{
			for(i=0;i

你可能感兴趣的:(DAY1 B. Parity Alternated Deletions)