Cod sursa(job #1385290)

Utilizator Dragne.Andrei11Dragne Andrei Dragne.Andrei11 Data 11 martie 2015 20:45:12
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.65 kb
#include <cstdio>
#define nmax 20

using namespace std;

struct linii
{
    int a11, a21;
}la1[nmax];
struct coloane
{
    int a12, a22;
}la2[nmax];
int matr[nmax][nmax];
int main()
{
    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);
    short n, m, i, j;
    long long s=0LL, maxim=-1000001;

    scanf("%hd%hd", &n, &m);
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            scanf("%d", &matr[i][j]);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
            matr[i][j]<0?la1[i].a21+=matr[i][j]:la1[i].a11+=matr[i][j];
        s+=la1[i].a11;
        s+=la1[i].a21;
    }
    for(j=1;j<=m;j++)
    {
        for(i=1;i<=n;i++)
            matr[i][j]<0?la2[j].a22+=matr[i][j]:la2[j].a12+=matr[i][j];
    }
    maxim=maxim<s?s:maxim;
    for(i=1;i<=n;i++)
    {
        if(la1[i].a11<la1[i].a21*-1)
        {
            for(j=1;j<=m;j++)
            {
                matr[i][j]*=-1;
                la1[i].a11+=matr[i][j];
                la1[i].a21+=matr[i][j];
                la2[j].a22+=matr[i][j];
                la2[j].a12+=matr[i][j];
            }
        }
    }
    for(j=1;j<=m;j++)
    {
        if(la2[j].a12<la2[j].a22*-1)
        {
            for(i=1;i<=n;i++)
            {
                matr[i][j]*=-1;
                la1[i].a11+=matr[i][j];
                la1[i].a21+=matr[i][j];
                la2[j].a22+=matr[i][j];
                la2[j].a12+=matr[i][j];
            }
        }
    }
    s=0;
    for(i=1;i<=n;i++)
    {
        s+=la1[i].a11;
        s+=la1[i].a21;
    }
    maxim=maxim<s?s:maxim;
    printf("%I64d\n", maxim);

    return 0;
}