Submission #1300693

#TimeUsernameProblemLanguageResultExecution timeMemory
1300693danglayloi1Orchard (NOI14_orchard)C++20
0 / 25
543 ms30700 KiB
#include <bits/stdc++.h> #define ii pair<int, int> #define fi first #define se second #define inf 0x3f3f3f3f using namespace std; using ll = long long; const ll mod=1e9+7; int n, m, ans=inf; vector<vector<int>> s0, s1; vector<vector<char>> a; int get(int x, int y, int u, int v, int k) { if(k==0) return s0[u][v]-s0[x-1][v]-s0[u][y-1]+s0[x-1][y-1]; return s1[u][v]-s1[x-1][v]-s1[u][y-1]+s1[x-1][y-1]; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m; a.assign(n+2, vector<char>(m+2)); s0.assign(n+2, vector<int>(m+2, 0)); s1.assign(n+2, vector<int>(m+2, 0)); for(int i = 1; i <= n; i++) { for(int j = 1; j <= m; j++) { cin>>a[i][j]; s0[i][j]=s0[i-1][j]+s0[i][j-1]-s0[i-1][j-1]+(a[i][j]=='0'); s1[i][j]=s1[i-1][j]+s1[i][j-1]-s1[i-1][j-1]+(a[i][j]=='1'); } } for(int l = 1; l <= n; l++) { for(int r = l; r <= n; r++) { int base[2]; for(int j = 0; j < 2; j++) base[j]=get(1, 1, l-1, m, j)+get(r+1, 1, n, m, j); int one=0, zero=0; for(int i = 1; i <= m; i++) { int cur[2]; for(int j = 0; j < 2; j++) cur[j]=get(l, 1, r, i, j); // if(l==2 && r==4 && i==6) cout<<cur[0]<<' '<<cur[1]<<' '<<one<<'\n'; ans=min(ans, cur[0]-one+base[1]+get(l, i+1, r, m, 1)); ans=min(ans, cur[1]-zero+base[0]+get(l, i+1, r, m, 0)); one=max(one, cur[0]-cur[1]); zero=max(zero, cur[1]-cur[0]); } } } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...