#include<iostream> usingnamespacestd; int m,n; constint maxn = 20; int a[maxn][maxn], flip[maxn][maxn], ans_flip[maxn][maxn], stat[maxn][maxn]; int ans = 1000;
#define Forij \ for (int i = 0; i < m; i++)\ for (int j = 0; j < n; j++)
voidF(int x, int y){ stat[x][y] = 1 - stat[x][y]; int d[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}}; for (int di = 0; di < 4; di++){ int nx = x + d[di][0], ny = y + d[di][1]; if (nx >= 0 && nx < m && ny >= 0 && ny < n) stat[nx][ny] = 1 - stat[nx][ny]; } }
intmain(){ cin >> m >> n; Forij cin >> a[i][j]; for (int x = 0; x < (1 << n); x++) { bool flag = true, cnt = 0; Forij stat[i][j] = a[i][j], flip[i][j] = 0;
for (int xi = 0; xi < n; xi++){ if (x & (1 << xi)) { F(0, xi); flip[0][xi] = 1; cnt++; } }
Forij { if (i == m - 1){ if (stat[i][j]){ flag = false; break; } } else { if (stat[i][j]){ F(i + 1, j); flip[i + 1][j] = 1; cnt++; } } }