Cod sursa(job #1667818)

Utilizator experiment322Alexandru-Damian Manea experiment322 Data 29 martie 2016 11:47:49
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <stdio.h>

enum {
    NMAX = 16,
    MMAX = 16
};

static int N, M, SMAX;
static int TABLE[NMAX][MMAX];

static int FillBits(int n)
{
    int i, x = 0;
    for (i = 0; i < n; ++i) {
        x += 1 << i;
    }
    return x;
}

static void CalcSum(int c)
{
    int i, j, sign, lsum, sum = 0;
    for (i = 0; i < N; ++i) {
        lsum = 0;
        for (j = 0; j < M; ++j) {
            if (c >> j & 1) {
                sign = -1;
            } else {
                sign = 1;
            }
            lsum += sign * TABLE[i][j];
        }
        lsum = lsum < 0 ? -lsum : lsum;
        sum += lsum;
    }
    SMAX = sum > SMAX ? sum : SMAX;
}

int main(void)
{
    int i, j, c;
    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);
    scanf("%i%i", &N, &M);
    for (i = 0; i < N; ++i) {
        for (j = 0; j < M; ++j) {
            scanf("%i", &TABLE[i][j]);
            SMAX += TABLE[i][j];
        }
    }
    c = FillBits(M);
    for (i = 0; i <= c; ++i) {
        CalcSum(i);
    }
    printf("%i\n", SMAX);
    return 0;
}