Cod sursa(job #1768962)

Utilizator giotoPopescu Ioan gioto Data 1 octombrie 2016 19:17:19
Problema Balanta Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
using namespace std;

int n,m,x,a[252][252],b[252][252];
int main()
{
    freopen("peri.in", "r", stdin);
    freopen("peri.out", "w", stdout);
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j){
            scanf("%d", &a[i][j]);
            if(a[i][j] == 0) --a[i][j];
            b[i][j] = b[i - 1][j] + a[i][j];
        }
    int Sol=-2000000000,NrSol=0;
    for(int i = 1; i <= n; ++i)
        for(int i1 = i + 1; i1 <= n; ++i1){
            int Max = b[i1][1] - b[i - 1][1], NrS = 1;
            for(int j=2;j<=m;++j){
                int sum = b[i1][j] - b[i - 1][j];
                if(sum + Max > Sol) Sol = sum + Max , NrSol=NrS;
                else if(sum + Max == Sol) NrSol+=NrS;
                Max += a[i1][j] + a[i][j];
                if(Max == sum) ++NrS;
                if(Max < sum) NrS = 1, Max = sum;
            }
        }
    printf("%d %d", Sol, NrSol);
    return 0;
}