Cod sursa(job #3003549)

Utilizator AnSeDraAndrei Sebastian Dragulescu AnSeDra Data 15 martie 2023 19:51:24
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 mat[Nmax + 4][Nmax + 4];
int isFlipped[Nmax + 4], sum[Nmax + 4];

int main()
{
    ifstream fin("flip.in");
    ofstream fout("flip.out");

    int n, m, sol, s;

    fin >> n >> m;

    for(int i = 0; i < n; i++){
        for(int j = 0; j < m; j++){
            fin >> mat[i][j];
        }
    }

    sol = 0;
    for(int h = 1; h < (1 << m); h++){
        for(int j = 0; j < m; j++){
            if((h & (1 << j))){
                isFlipped[j] = 1;
            }
            else{
                isFlipped[j] = 0;
            }
        }

        for(int i = 0; i < n; i++){
            for(int j = 0; j < m; j++){
                if(isFlipped[j] == 1){
                    sum[i] -= mat[i][j];
                }
                else{
                    sum[i] += mat[i][j];
                }
            }
        }

        s = 0;
        for(int i = 0; i < n; i++){
            if(sum[i] < 0){
                s -= sum[i];
            }
            else{
                s += sum[i];
            }
            sum[i] = 0;
        }

        sol = max(sol, s);
    }

    fout << sol;

    return 0;
}