Cod sursa(job #3131468)

Utilizator daristyleBejan Darius-Ramon daristyle Data 20 mai 2023 12:39:29
Problema Jocul Flip Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

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

const int ROWS_MAX = 16;
const int COLUMNS_MAX = 16;
int m[ROWS_MAX][COLUMNS_MAX];
char rowSign[ROWS_MAX], columnSign[COLUMNS_MAX];

int main() {
	int rows, columns, sum, sum_max = 0;
	fin >> rows >> columns;
	for(int r = 0; r < rows; ++r)
		for(int c = 0; c < columns; ++c){
			fin >> m[r][c];
			sum_max += m[r][c];
		}

	for(int rsubset = 1; rsubset < (1 << rows); ++rsubset){
		for(int i = 0; i < rows; ++i)
			rowSign[i] = (rsubset & (1 << i)) ? -1 : 1;

		for(int csubset = 0; csubset < (1 << columns); ++csubset){
			for(int i = 0; i < columns; ++i)
				columnSign[i] = (csubset & (1 << i)) ? -1 : 1;

			sum = 0;
			for(int r = 0; r < rows; ++r)
				for(int c = 0; c < columns; ++c)
					sum += rowSign[r] * columnSign[c] * m[r][c];

			if(sum > sum_max)
				sum_max = sum;
		}
	}

	fout << sum_max << '\n';

	fin.close();
	fout.close();
	return 0;
}