Cod sursa(job #1209462)

Utilizator kappykkDragos kappykk Data 17 iulie 2014 19:10:45
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>

using namespace std;

int x[17][17];

int coloana[170];

int n,m;

int SumaLinii(){
    int s = 0;
    for(int i = 1 ; i <= n ; ++i){
        int s1 = 0;
        int s2 = 0;
        for(int j = 1 ; j <= m ; ++j){
            if(coloana[j] == 1){
                s1 -= x[i][j];
                s2 += x[i][j];
            }
            else{
                s1 += x[i][j];
                s2 -= x[i][j];
            }
        }
        s += max(s2, s1);
    }
    return s;
}

int main()
{
    ifstream f("flip.in");
    ofstream g("flip.out");
    f>>n;
    f>>m;
    for(int i = 1 ; i <= n ; ++i)
        for(int j = 1 ; j <= m ; ++j)
            f>>x[i][j];
    int maxx = -(1<<30);
    for(int sm = 0 ; sm < (1 << m) ; ++sm){
        for(int i = 1 ; i <= 17 ; ++i)
            coloana[i] = 0;
        for(int i = 0 ; i < m ; ++i){
            if((sm&(1<<i)) != 0){
                coloana[i + 1] = 1;
            }
        }
        int k = SumaLinii();
        if(k > maxx)
            maxx = k;
    }
    g<<maxx;
    return 0;
}