Cod sursa(job #1696395)

Utilizator andreinmAndrei andreinm Data 28 aprilie 2016 23:17:23
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
using namespace std;

const int MAX_N = 20;

int i, j, n, m, update, conf, ans;
int a[MAX_N][MAX_N];
int current[MAX_N*MAX_N], tmp[MAX_N*MAX_N];

int main()
{
    ifstream cin("flip.in");
    ofstream cout("flip.out");

    cin >> n >> m;

    for (i = 1; i <= n; ++i)
        for (j = 1; j <= m; ++j) {
            cin >> a[i][j];
            tmp[j] += a[i][j];
        }

    for (conf = 0; conf < (1 << n); ++conf) {
        for (j = 1; j <= m; ++j)
            current[j] = tmp[j];

        for (i = 0; i < n; ++i) {
            if (conf & (1 << i))
                for (j = 1; j <= m; ++j)
                    current[j] -= 2 * a[i+1][j];
        }

        update = 0;
        for (j = 1; j <= m; ++j)
            if (current[j] < 0)
                update += current[j] * (-1);
            else
                update += current[j];

        ans = max(ans, update);

    }

    cout << ans;

    cin.close();
    cout.close();

    return 0;
}