Cod sursa(job #2229707)

Utilizator Constantin.Dragancea Constantin Constantin. Data 7 august 2018 22:50:12
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <bits/stdc++.h>
using namespace std;

int n, m, ans, a[20][20], b[20][20];

void copi(){
    for (int i=1; i<=n; i++)
        for (int j=1; j<=m; j++) b[i][j] = a[i][j];
}

void flipc(int col){
    for (int i=1; i<=n; i++) b[i][col] = -b[i][col];
}

void flipr(int row){
    for (int j=1; j<=m; j++) b[row][j] = -b[row][j];
}

int getr(int row){
    int rs = 0;
    for (int j=1; j<=m; j++) rs += b[row][j];
    return rs;
}

int get(){
    int rs = 0;
    for (int i=1; i<=n; i++)
        for (int j=1; j<=m; j++) rs += b[i][j];
    return rs;
}

int main(){
    ifstream cin ("flip.in");
    ofstream cout ("flip.out");
    cin >> n >> m;
    for (int i=1; i<=n; i++)
        for (int j=1; j<=m; j++) cin >> a[i][j];
    for (int i=1; i < (1<<m); i++){
        copi();
        for (int j=0; j<m; j++){
            if ((1<<j) & i) flipc(j+1);
        }
        for (int j=1; j<=n; j++){
            if (getr(j) < 0) flipr(j);
        }
        ans = max(ans, get());
    }
    return cout << ans, 0;
}