Я застрял на проблеме конкурентного программирования. Имеется N <1000 чисел, каждое со значениями от 1 до 100. Эти числа могут быть разделены на группы таким образом, чтобы сумма первой группы была четной, сумма второй группы была нечетной, сумма третьей группы была четной и т. Д. Таким попеременным способом. Я написал код, но этот код иногда возвращает неправильный ответ, но не все время. Я предполагаю, что это как-то связано с моими делами, но я просто застрял.
Пример ввода:
7
1 3 5 7 9 11 13
Вывод:
3
Объяснение: Вы можете поместить 1 и 3 в первую группу, 5 7 9 во вторую группу и 11 13 в последнюю группу.
import java.util.Scanner;
public class Average {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int odd = 0;
int even = 0;
int ans = 0;
int x;
for (int i = 0; i < n; i++) {
x = sc.nextInt();
if (x % 2 == 0) {
even++;
} else {
odd++;
}
}
ans = Math.min(even, odd) * 2;
even -= ans;
odd -= ans;
if (even > odd) {
ans++;
} else {
if (odd % 3 == 0) {
ans += (odd / 3) * 2;
} else if(odd%3 == 1){
ans += (odd / 3) * 2 - 1;
} else {
ans += (odd/3) * 2 + 1;
}
}
System.out.println(ans);
}
}
```