Cod sursa(job #2061874)

Utilizator cyg_ionutStan Ionut Gabriel cyg_ionut Data 9 noiembrie 2017 19:43:58
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <bits/stdc++.h>
using namespace std;

int ma[20][20], maxs = 0, cl[20][20], bad[20], suma = 0, n, m, s, i, j;

int comp(int x, int y) {
    if (x >= y)
        return x ;
    else
        return y; }

void flip () {
    suma = 0;
    for (i = 1; i <= n; i++) {
        if (bad[i] == false)
            for (j = 1; j <= m; j++)
                cl[i][j] = ma[i][j];
        else
            for (j = 1; j <= m; j++)
                cl[i][j] = -1 * ma[i][j]; }

    for (j = 1; j <= m; j++) {
        s = 0;
        for (i = 1; i <= n; i++)
            s = s + cl[i][j];
        if (s > 0)
            suma = suma + s;
        else
            suma = suma - s; }

        maxs = comp(maxs, suma); }

void q(int w) {
    if (w > n) {
        flip();
        return ; }
    bad[w] = 0;
    q(w + 1);
    bad[w] = 1;
    q(w + 1); }

int main() {
    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);

    scanf("%d", &n);
    scanf("%d", &m);
    for (i = 1; i <= n; i++)
        for ( j = 1; j <= m; j++)
            scanf("%d", &ma[i][j]);

    q(1);

    printf("%d", maxs);

    return 0; }