Cod sursa(job #2825180)

Utilizator luptatorul451Ruja Marcello luptatorul451 Data 4 ianuarie 2022 11:40:17
Problema Jocul Flip Scor 100
Compilator cpp-32 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <iostream>
#include <fstream>
#define INF 0x3f3f3f3f

using namespace std;
ifstream fin ("flip.in");
ofstream fout ("flip.out");


int main(){
    int N , M, a[17][17], sLin[17];
    fin >> N >> M ;
    int sum = 0;
    for (int i = 0 ; i < N ; ++i){
        sLin[i] = 0;
        for (int j = 0 ; j < M ; ++j){
            fin >> a[i][j];
            sLin[i] += a[i][j];
        }
        sum += sLin[i];
    }
    int ans = -INF, active[17];
    for (int mask = 0; mask < (1 << N); ++mask) {
        int newSum = sum, n = 0;
        for (int i = 0; (1 << i) <= mask; ++i) {
            if (mask & (1 << i)) {
                newSum -= sLin[i];
                newSum += (-1) * sLin[i];
                active[n++] = i;
            }
        }
        for (int j = 0; j < M; ++j) {
            int sum2 = newSum;
            for (int i = 0; i < N; ++i) {
                if (mask & (1 << i)) {
                    sum2 -= (-1) * a[i][j];
                    sum2 += a[i][j];
                } else {
                    sum2 -= a[i][j];
                    sum2 += (-1) * a[i][j];
                }
            }
            if (newSum < sum2) {
                newSum = sum2;
            }
        }
        ans = max(ans, newSum);
    }
    fout << ans << '\n';
    return 0;
}