func_code_string: #include <bits/stdc++.h>   using namespace std;   inline int read(int f = 1, int x = 0, char ch =    ) {     while (!isdigit(ch = getchar()))       if (ch ==  - ) f = -1;     while (isdigit(ch)) x = x * 10 + ch -  0 , ch = getchar();     return f * x;   }   const int N = 1e2 + 5;   int n, c[2], p[N], q[N], f[2][N][N][N];   int main() {     n = read();     for (int i = 1; i <= n; ++i)       p[i] = q[i] = read(), p[i] &= 1, c[p[i]] += q[i] != 0;     c[0] = n / 2 - c[0], c[1] = n - n / 2 - c[1];     memset(f, 0x3f, sizeof(f)), f[0][0][0][0] = f[1][0][0][0] = 0;     for (int i = 1; i <= n; ++i)       for (int j = 0; j <= c[0]; ++j)         for (int k = 0; k <= c[1]; ++k)           if (q[i])             f[p[i]][i][j][k] = min(f[0][i - 1][j][k] + (0 ^ p[i]),                                    f[1][i - 1][j][k] + (1 ^ p[i]));           else {             if (j)               f[0][i][j][k] = min(f[0][i][j][k], f[0][i - 1][j - 1][k]),               f[0][i][j][k] = min(f[0][i][j][k], f[1][i - 1][j - 1][k] + 1);             if (k)               f[1][i][j][k] = min(f[1][i][j][k], f[1][i - 1][j][k - 1]),               f[1][i][j][k] = min(f[1][i][j][k], f[0][i - 1][j][k - 1] + 1);           }     printf( %d n , min(f[0][n][c[0]][c[1]], f[1][n][c[0]][c[1]]));     return 0;   }   