Cod sursa(job #2799476)

Utilizator Diana_IonitaIonita Diana Diana_Ionita Data 13 noiembrie 2021 11:35:39
Problema BMatrix Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bmatrix.in");
ofstream fout("bmatrix.out");
int i,j,k,n,m,h,rez,arie;
int d[205],sus[205],jos[205],s[205],v[205],a[205][205];
char ch;
int main()
{
    fin>>n>>m;
    for(i=1; i<=n; i++)
        for(j=1; j<=m; j++)
        {
            fin>>ch;
            a[i][j]=ch-'0';
        }

    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {
            if(!a[i][j]) v[j]++;
            else v[j]=0;
            arie=0;
            h=40005;
            for(k=j; k>=1; k--)
            {
                h=min(h,v[k]);
                arie=max(arie,h*(j-k+1));
            }
            sus[i]=max(max(sus[i-1],arie),sus[i]);
            s[j]=max(max(s[j-1],arie),s[j]);

        }
    }
    memset(v,0,sizeof(v));

    for(i=n; i>=1; i--)
    {
        for(j=m; j>=1; j--)
        {
            if(!a[i][j]) v[j]++;
            else v[j]=0;
            arie=0;
            h=40005;
            for(k=j; k<=m; k++)
            {
                h=min(h,v[k]);
                arie=max(arie,h*(k-j+1));
            }
            jos[i]=max(max(jos[i+1],arie),jos[i]);
            d[j]=max(max(d[j+1],arie),d[j]);
        }
    }

    for(i=1; i<n; i++)
        rez=max(rez,sus[i]+jos[i+1]);

    for(i=1; i<m; i++)
        rez=max(rez,s[i]+d[i+1]);

    fout<<rez;
    return 0;
}