10074

#include <iostream>

using namespace std;

int arr[105][105];
int M,N;

int Matsum(int a,int b)
{
    int p,max_end_here=0,max_so_far=0;
    int Line[105];
    for(int i=1;i<=N;i++)
    {
       p = 0;
       for(int j=a;j<=b;j++)
       {
           p+=arr[j][i];
       }
       Line[i]=p;
    }

    max_end_here=0;
    max_so_far=0;
    for(int i=1;i<=N;i++)
    {
       max_end_here = max_end_here + Line[i];

       if(max_end_here<0)
          max_end_here = 0;
       if(max_so_far<max_end_here)
         max_so_far = max_end_here;

    }

    return max_so_far;
}

int main()
{
    int a;
    int mx=0,x;
    while(cin>>M>>N)
    {
       if(M==0 && N==0)
       break;
       for(int i=1;i<=M;i++)
       {
          for(int j=1;j<=N;j++)
          {
             cin>>a;
             if(a==0)
             arr[i][j]=1;
             //a = -1;
             if(a)
             arr[i][j]=-1000000;//a[i-1][j]+a;
          }
       }
       mx = 0;
       for(int i=1;i<=M;i++)
       {
           for(int j=i;j<=M;j++)
           {
              x = Matsum(i,j);
              if(x>mx)
              mx=x;
           }
       }

       cout<<mx<<"\n";
    }//end while

    return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *