#include <iostream>
#include <vector>
#include <string>
#include <math.h>
#include <cmath>
#include <iomanip>
#include <cstdio>
#include <algorithm>
#include <numeric>
#include <map>
#include <set>
#include <queue>
#include <stack>
#include <deque>
#include <bitset>
#include <cstring>
#include <unordered_map>
using namespace std;
typedef long long ll;
int main(){
ll n, m;
cin >> n >> m;
vector<vector<ll>> a(n, vector<ll> (m));
ll tot = 0;
for(auto &i: a)
for(auto &j: i){
cin >> j;
tot += j;
}
ll ans = n * m;
vector<ll> pref0(m), pref1(m);
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++)
pref0[j] = pref1[j] = 0;
for(int j = i; j < n; j++){
ll cur0 = 0, cur1 = 0;
for(int p = 0; p < m; p++){
cur0 += (1 - a[j][p]);
cur1 += a[j][p];
pref0[p] += cur0;
pref1[p] += cur1;
}
ll mn = 0;
for(int p = 0; p < m; p++){
ans = min(ans, pref0[p] - pref1[p] + mn);
mn = min(mn, pref1[p] - pref0[p]);
}
}
}
cout << ans + tot << endl;
return 0;
}
/*
5 7
0 0 1 0 0 1 0
0 1 1 1 1 1 0
0 1 1 0 0 1 0
0 1 1 1 1 1 0
0 0 1 0 0 1 0
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |