Cod sursa(job #3132341)

Utilizator alex1bondocAlex Bondoc alex1bondoc Data 22 mai 2023 12:55:21
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 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], sumCol[COLUMNS_MAX];
char rowSign[ROWS_MAX];

int abs(int x) {
	return (x > 0) ? x : -x;
}

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 c = 0; c < columns; ++c)
			sumCol[c] = 0;

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

		sum = 0;
		for(int c = 0; c < columns; ++c)
			sum += abs(sumCol[c]);

		if(sum > sum_max)
			sum_max = sum;
	}

	fout << sum_max << '\n';

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