/* ID: espr1t LANG: C++ TASK: Demo CONTEST: CodeIT, Round 2, 2011 KEYWORDS: */ #include #include #include #include #include #include #include #include #include #include #include #define MAX 1024 using namespace std; FILE *in; FILE *out; int n, m; int a[MAX][MAX]; string toString(long long num) { if (num == 0) return "0"; string ret; while (num) {ret.push_back(num % 10 + 48); num /= 10;} reverse(ret.begin(), ret.end()); return ret; } int main(void) { in = stdin; out = stdout; in = fopen("mines.in", "rt"); out = fopen("mines.out", "wt"); fscanf(in, "%d %d", &n, &m); for (int i = 0; i < n; i++) for (int c = 0; c < m; c++) fscanf(in, "%d", &a[i][c]); int minRow = n, maxRow = 0; int minCol = m, maxCol = 0; for (int i = 0; i < n; i++) { for (int c = 0; c < m; c++) if (a[i][c]) { minRow = min(minRow, i); maxRow = max(maxRow, i); minCol = min(minCol, c); maxCol = max(maxCol, c); } } long long ans = 1; ans *= minRow + 1; ans *= minCol + 1; ans *= n - maxRow; ans *= m - maxCol; fprintf(out, "%s\n", toString(ans).c_str()); return 0; }