Cod sursa(job #1815162)

Utilizator Coroian_DavidCoroian David Coroian_David Data 24 noiembrie 2016 21:32:41
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 1.33 kb
#include <cstdio>

#include <cstring>

using namespace std;

FILE *f, *g;

int n, m, mx, a[17][17], col[17], lin[17], s, bkStk[33], k;

void readFile()
{
    f = fopen("flip.in", "r");

    fscanf(f, "%d%d", &n, &m);

    int i, j;

    for(i = 1; i <= n; i ++)
    {
        for(j = 1; j <= m; j ++)
            fscanf(f, "%d", &a[i][j]), col[j] += a[i][j], lin[i] += a[i][j], s += a[i][j];
    }

    fclose(f);
}

void calc(int col[])
{
    int i, j;

    for(i = 1; i <= n; i ++)
        for(j = 1; j <= m; j ++)
            col[j] += a[i][j];
}


void sol(int n, int lin[], int m, int col[])
{
    int i, rez = s, j;

    for(i = 1; i <= n; i ++)
    {
        if(lin[i] < 0)
        {
            for(j = 1; j <= m; j ++)
                a[i][j] = -a[i][j], rez += 2 * a[i][j];
        }


    }

    int sum;

    for(i = 1; i <= m; i ++)
    {
        sum = 0;

        for(j = 1; j <= n; j ++)
            sum += a[j][i];

        if(sum < 0)
            rez -= 2 * sum;
    }

    if(rez > mx)
        mx = rez;
}

void solve()
{
    sol(n, lin, m, col);
    sol(m, col, n, lin);
}

void printFile()
{
    g = fopen("flip.out", "w");

    fprintf(g, "%d\n", mx);

    fclose(g);
}

int main()
{
    readFile();

    solve();

    printFile();

    return 0;
}