Cod sursa(job #98)

Utilizator fluffyDan-Leonard Crestez fluffy Data 4 decembrie 2006 23:46:23
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

FILE *fin, *fout;

#define MAX_N (1 << 5)
#define MAX_M (1 << 5)

int n, m, num[MAX_N][MAX_M];

void read(void)
{
    int i, j;

    fscanf(fin, "%d%d", &n, &m);
    for (i = 0; i < n; ++i) {
        for (j = 0; j < m; ++j) {
            fscanf(fin, "%d", num[i] + j);
        }
    }
}

int solve(void)
{
    int c, i, j, lsum, csum, bsum;
    bsum = -999999;
    for (c = 0; c < (1 << n); ++c) {
        csum = 0;
        for (i = 0; i < m; ++i) {
            lsum = 0;
            for (j = 0; j < n; ++j) {
                lsum += (((1 << j) & c) ? 1 : -1) * num[j][i];
            }
            csum += lsum < 0 ? -lsum : lsum;
            /*fprintf(fout, "%d ", lsum < 0 ? -lsum : lsum);*/
        }
        /*fprintf(fout, "\n");*/
        if (csum > bsum) {
            bsum = csum;
        }
    }
    return bsum;
}

int main(void)
{
    fin = fopen("flip.in", "rt");
    fout = fopen("flip.out", "wt");
    read();
    fprintf(fout, "%d\n", solve());
    fclose(fin);
    fclose(fout);
    return 0;
}