#include #include void Array_Collect(const int N, int tmp[], int tmp2[],int umu[]) { // 残っている数字をtmp配列にまとめる int j = 0; for (int i = 0; i < N ; i++) { if ((umu[i] != 1)) { tmp2[j++] = tmp[i]; } else { umu[i] = 0; } } } int Array_Jump(const int N, int tmp[],int umu[],int cnt) { for (int i = 0; i < N; i++) { // 奇数偶数で隣り合うものを消去 if ((tmp[i] % 2 == 0 && tmp[i + 1] % 2 != 0) || (tmp[i] % 2 != 0 && tmp[i + 1] % 2 == 0)) { umu[i] = 1; umu[i+1] = 1; i++; cnt -= 2; } } return cnt; } int main() { int i = 0, j = 0, N; int tmp[20][10000]; scanf("%d", &N); int cnt = N, cnt2 = N, umu[100] = { 0 }; for (i = 0; i < N ; i++) { scanf("%d", &tmp[0][i]); } i = 0; while (j++ < 10) { if (cnt2 > 1) { if (j == 1) cnt2 -= 2; cnt2 = Array_Jump(cnt2, tmp[i], umu, cnt2); Array_Collect(N, tmp[i], tmp[i+1], umu); i++; } } printf("%d\n", cnt2); return 0; }