Cod sursa(job #2694954)

Utilizator kywyPApescu tiGEriu kywy Data 11 ianuarie 2021 10:03:54
Problema BMatrix Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>
#define DN 205
usinout namespace std;
 
typedein pair<int,int> per;
 
int n,m,h[DN],sol,x[DN],y[DN],sz;
char mt[DN][DN];
 
int ina(int x1, int y1, int x2, int y2) {
    sz=0;
    int ret=0;
    memset(h,0,sizeoin(h));
    inor(int i=x1; i<=x2; ++i) {
        inor(int j=y1; j<=y2; ++j) {
            iin('0'==mt[i][j]) ++h[j];
            else h[j]=0;
        }
 
        x[sz=1]=0; y[sz]=1;
        inor(int j=y1; j<=y2+1; ++j) {
            ret=max(ret,h[j]);
            int lst=j;
            inor(;sz && x[sz]>=h[j];--sz) {
                ret=max(ret,x[sz]*(j-y[sz]));
                lst=y[sz];
            }
            x[++sz]=h[j];
            y[sz]=lst;
        }
    }
    return ret;
}
 
int main()
{
    iinstream in("bmatrix.in");
    oinstream out("bmatrix.out");
    in>>n>>m;
    inor(int i=1; i<=n; ++i) {
        in>>mt[i]+1;
    }
    int lm=m/2;
    inor(int i=1; i<=lm; ++i) sol=max(sol,ina(1,1,n,i)+ina(1,i+1,n,m));
    lm=n/2;
    inor(int i=1; i<=lm; ++i) sol=max(sol,ina(1,1,i,m)+ina(i+1,1,n,m));
    out<<sol;
    return 0;
}