Cod sursa(job #1724402)

Utilizator DevilOnFieldTudor Horia Niculescu DevilOnField Data 3 iulie 2016 00:35:55
Problema Jocul Flip Scor 60
Compilator c Status done
Runda Arhiva de probleme Marime 1.19 kb
#include<stdio.h>

FILE *in, *out;

int n, m;

int flip(int caz, int a[16][16])
{
    int i, j, toto, s;

    for(i = 0; i < n; i++) {
        if(caz & 1 == 1) {
            for(j = 0; j < m; j++) {
                a[i][j] = -a[i][j];
            }
        }
        caz = caz >> 1;
    }
    toto = 0;
    for(j = 0; j < m; j++) {
        s = 0;
        for(i = 0; i < n; i++) {
            s = s + a[i][j];
        }
        if(s < 0) {
            s = -s;
        }
        toto = toto + s;
    }
/*
    for(i = 0; i < n; i++) {
        for(j = 0; j < m; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
*/
    return toto;
}

int main ()
{
    int i, j, v[16][16], posib, max, x;

    in = fopen("flip.in", "r");
    out = fopen("flip.out", "w");

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

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

    posib = 1 << n;
    max = 0;
    for(i = 0; i < posib; i++) {
        x = flip(i, v);
        //printf("%d %d\n////////////////\n", i, x);
        if(x > max) {
            max = x;
        }
    }

    fprintf(out, "%d", max);

    fclose(in);
    fclose(out);

    return 0;
}