Cod sursa(job #1700996)

Utilizator moise_alexandruMoise Alexandru moise_alexandru Data 11 mai 2016 22:23:11
Problema Jocul Flip Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
const int maxn = 20;
int M[maxn][maxn];
int n, m;
long long ans;
inline void flip(int lin)
{
    for(int i = 1; i <= m; i++)
        M[lin][i] = M[lin][i] * (-1);
}
inline 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];
        if(s < 0)
            s = s * (-1);
        sum += s;
    }
    ans = max(ans, 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 << m); 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 << ans << "\n";
    return 0;
}