Cod sursa(job #1804891)

Utilizator PondorastiAlex Turcanu Pondorasti Data 13 noiembrie 2016 10:53:23
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
const int maxn = 25;
int M[maxn][maxn];
int n, m;
long long rasp;
inline void flip(int lin)
{
    for(int i = 1; i <= m; i++)
        M[lin][i] = M[lin][i] * (-1);
}

inline int mod(int s)
{
    if(s >= 0)
        return s;
    return -s;
}

void flipv()
{
    long long sum = 0;
    for(int j = 1; j <= m; j++)
    {
        long long s = 0;
        for(int i = 1; i <= n; i++)
            s = s + M[i][j];
        s = mod(s);
        sum += s;
    }
    rasp = max(rasp, sum);
}
int main()
{
    in >> n >> m;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
            in >> M[i][j];
    for(int conf = 0; conf < (1 << n); conf++)
    {
        for(int i = 0; i < n; i++)
            if(conf & (1 << i))
                flip(i + 1);
        flipv();
        for(int i = 0; i < n; i++)
            if(conf & (1 << i))
                flip(i + 1);
    }
    out << rasp << "\n";
    return 0;
}