题意:给定一个序列,第一步消去一个偶数或奇数,下面的操作若上一步是奇数则消除偶数,反之消除奇数,求序列中剩下所有数的和
思路:若奇数偶数相等或相差1,则直接输出0,其他情况减去奇偶差,大于0的话就将多出的部分求和
#include<bits/stdc++.h>
using namespace std;
int n, a[2005];
int main()
{
while (cin >> n) {
int t1 = 0, t2 = 0, res = 0;
for (int i = 0; i < n; i++) {
cin >> a[i];
if (a[i] & 1)
t1++;
else
t2++;
}
sort(a, a+n);
int k = t1 - t2;
if (k < 0)
k = -k;
if (k <= 1) {
cout << 0 << endl;
continue;
}
k -= 1;
if (t1 > t2) {
for (int i = 0; i < n; i++) {
if (a[i] & 1) {
res += a[i];
k--;
}
if (k == 0)
break;
}
}
if (t1 < t2) {
for (int i = 0; i < n; i++) {
if (!(a[i] & 1)) {
res += a[i];
k--;
}
if (k == 0)
break;
}
}
cout << res << endl;
}
return 0;
}