제출 #156981

#제출 시각아이디문제언어결과실행 시간메모리
156981brcode과수원 (NOI14_orchard)C++14
25 / 25
359 ms25820 KiB
#include <iostream>

using namespace std;
int ans,cnt;
int main(){
    int n,m;
    cin>>n>>m;
    int dp[n+5][m+5];
    int arr[n+5][m+5];
    for(int i=0;i<=n+1;i++){
        for(int j=0;j<=m+1;j++){
            dp[i][j] = 0;

            arr[i][j] = 0;
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            char x;
            cin>>x;

            if(x=='0'){
                arr[i][j] = -1;
            }else{
                arr[i][j] = 1;
                cnt++;
            }
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            dp[i][j] = dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+arr[i][j];
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=i;j<=n;j++){
            int pos = m;
            for(int k=m;k>=1;k--){
                if(dp[j][k]-dp[i-1][k]>dp[j][pos]-dp[i-1][pos]){
                    pos = k;
                }
                ans = max(ans, dp[j][pos]-dp[j][k-1]-dp[i-1][pos]+dp[i-1][k-1]);
            }

        }
    }
    cout<<cnt-ans<<endl;
}
#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...