【题目描述】
Farmer John 正再一次尝试给他的 头奶牛拍照()。
每头奶牛有一个范围在 之内的整数的「品种编号」。Farmer John 对他的照片有一个十分古怪的构思:他希望将所有的奶牛分为不相交的若干组(换句话说,将每头奶牛分到恰好一组中)并将这些组排成一行,使得第一组的奶牛的品种编号之和为偶数,第二组的编号之和为奇数,以此类推,奇偶交替。
Farmer John 可以分成的最大组数是多少?
【输入格式】
输入的第一行包含 N。下一行包含 N 个空格分隔的整数,为 N 头奶牛的品种编号。
【输出格式】
输出 Farmer John 的照片中的最大组数。可以证明,至少存在一种符合要求的分组方案。
【输入输出样例#1】
| 输入#1 | 输出#1 |
| 7 1 3 5 7 9 11 13 | 3 |
【输入输出样例#2】
| 输入#2 | 输出#2 |
| 7 8 2 16 12 1 15 4 | 5 |
【输入输出样例#3】
| 输入#3 | 输出#3 |
| 6 1 2 3 4 5 6 | 6 |
【说明提示】
样例1解释,以下是一种分成最大组数三组的方案。将 1 和 3 分在第一组,5、7 和 9 分在第二组,11 和 13 分在第三组。
【代码样例】
#include <bits/stdc++.h>
using namespace std;
int main() {
int odd = 0, even = 0; //奇数、偶数
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
if (x % 2 == 0) {
even++;
} else {
odd++;
}
}
if (odd < even) {
cout << 2 * odd + 1 << endl;
} else if (odd >= even) {
if ((odd - even) % 3 == 0) {
cout << 2 * (even + (odd - even) / 3) << endl;
} else if ((odd - even) % 3 == 1) {
cout << 2 * (even + (odd - even) / 3) - 1 << endl;
} else if ((odd - even) % 3 == 2) {
cout << 2 * (even + (odd - even) / 3) + 1 << endl;
}
}
}