Cod sursa(job #3276670)

Utilizator inacioataCioata Ana Irina inacioata Data 14 februarie 2025 08:40:55
Problema BMatrix Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.54 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("bmatrix.in");
ofstream fout("bmatrix.out");
char a[205];
int b[205][205], sum[205][205], t[205], point;

///numarul maxim de 0 uri
int Sum(int t[], int n)
{
    int smax,s=0,i, j = 1;
    smax=t[1];
    for(i=1; i<=n; i++)
    {
        s += t[i];
        if(s > smax)
        {
            smax = s;
            point = i - j;
        }
        if(s<0)
        {
            j = i;
            s=0;
        }
    }
    return smax;
}

int main()
{
    int n, m, i, j, p, q, smax = 0, dim, dim2, smax2 = 0;
    fin >> n >> m;
    for(i = 1; i <= n; i++)
    {
        fin >> a;
        for(j = 0; a[j]; j++)
            if(a[j] - '0' == 0) b[i][j + 1] = 1;
            else b[i][j + 1] = -1;
            //b[i][j + 1] = a[j] - '0';
    }
    for(i = 1; i <= n; i++)
        for(j = 1; j <= m; j++)
            sum[i][j] = b[i][j] + sum[i-1][j];
    for(p = 1; p <= n; p++)
        for(q = p; q <= n; q++)
    {
        for(i = 1; i <= m; i++)
            t[i] = sum[q][i] - sum[p - 1][i];
        if(smax < Sum(t, n))
        {
            smax = Sum(t, n);
            dim = point * (q - p - 1);
        }
    }
    for(p = 1; p <= n; p++)
        for(q = p; q <= n; q++)
    {
        for(i = 1; i <= m; i++)
            t[i] = sum[q][i] - sum[p - 1][i];
        if(smax2 < Sum(t, n) && smax != Sum(t, n))
        {
            smax2 = Sum(t, n);
            dim2 = point * (q - p - 1);
        }
    }
    fout << dim + dim2;
    return 0;
}