Cod sursa(job #2178132)

Utilizator NoImaginationForNameNo Imagination For Name NoImaginationForName Data 19 martie 2018 10:16:49
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.55 kb
#include <stdio.h>
using namespace std;

int n, m, a[20][20];

void read()
{
    freopen("flip.in", "r", stdin);
    scanf("%d %d\n", &n, &m);
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            scanf("%d ", &a[i][j]);
}

void commute(int x, int y)
{
    if (x == 1)
    {
        for(int j = 0; j < m; j++)
            a[y][j] *= -1;
    }
    else
    {
        for(int i = 0; i < n; i++)
            a[i][y] *= -1;
    }
}

void sumCheckColumn()
{
    int spos = 0;
    int sneg = 0;
    for (int j = 0; j < m; j++)
    {
        sneg = 0;
        spos = 0;
        for (int i = 0; i < m; i++)
        {
            if (a[i][j] < 0)
                sneg += a[i][j];
            else
                spos += a[i][j];
        }
        sneg *= -1;
        if(sneg > spos)
            commute(2, j);
    }
}

void sumCheckLine()
{
    int spos = 0;
    int sneg = 0;
    for (int i = 0; i < n; i++)
    {
        sneg = 0;
        spos = 0;
        for (int j = 0; j < m; j++)
        {
            if (a[i][j] < 0)
                sneg += a[i][j];
            else
                spos += a[i][j];
        }
        sneg *= -1;
        if(sneg > spos)
            commute(1, i);
    }
}

void sum()
{
    int sum = 0;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            sum += a[i][j];
    freopen("flip.out", "w", stdout);
    printf("%d", sum);
}

int main()
{
    read();
    sumCheckLine();
    sumCheckColumn();
    sum();
    return 0;
}