Cod sursa(job #3158326)

Utilizator AswVwsACamburu Luca AswVwsA Data 18 octombrie 2023 13:03:06
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>

using namespace std;

const int NMAX = 16;
int v[NMAX + 1][NMAX + 1];
int mat[NMAX + 1][NMAX + 1];
bool viz[NMAX + 1][NMAX + 1];

int main()
{
    ifstream cin("flip.in");
    ofstream cout("flip.out");
    int n, m, i, j, k;
    cin >> n >> m;

    int ans = 0;

    for (i = 0; i < n; i++)
        for (j = 0; j < m; j++)
        {
            cin >> v[i][j];
            ans += v[i][j];
        }
    int msk = (1 << n);

    for (i = 0; i < msk; i++)
    {
        for (j = 0; j < n; j++)
            if (i & (1 << j))
            {
                for (k = 0; k < m; k++)
                {
                    mat[j][k] = -v[j][k];
                    viz[j][k] = 1;
                }
            }
        for (j = 0; j < n; j++)
            for (k = 0; k < m; k++)
                if (viz[j][k] == 0)
                    mat[j][k] = v[j][k];

        int sum = 0;
        for (j = 0; j < m; j++)
        {
            int s2 = 0;
            for (k = 0; k < n; k++)
            {
                s2 += mat[k][j];
                viz[k][j] = 0;
            }
            sum += max(s2, -s2);
        }
        ans = max(ans, sum);
    }
    cout << ans;
}