Cod sursa(job #1289450)

Utilizator ghimpeleSeteanu Radu ghimpele Data 9 decembrie 2014 21:34:58
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#include <algorithm>
#define NMax 20

using namespace std;

const char IN[] = "flip.in", OUT[] = "flip.out";

int N, M, Rez;
int Mat[NMax][NMax];

void test() {

	int suma = 0, sumb = 0, rez = 0;

	for ( int j = 1; j <= M; ++ j ) {
		suma = sumb = 0;
		for ( int i = 1; i <= N; ++ i ) {
			suma += Mat[i][j];
			sumb -= Mat[i][j];
		}
		rez += max(suma, sumb);
	}

	Rez = max(Rez, rez);
}

void bkt( int line ) {

	if ( line > N ) {
		test();
		return;
	}

	bkt(line + 1);
	for ( int i = 1; i <= M; ++ i )
		Mat[line][i] = - Mat[line][i];
	bkt(line + 1);
	for ( int i = 1; i <= M; ++ i )
		Mat[line][i] = - Mat[line][i];
}

int main() {

	freopen(IN, "r", stdin);
	freopen(OUT, "w", stdout);
	scanf("%d%d", &N, &M);
	for ( int i = 1; i <= N; ++ i )
		for ( int j = 1; j <= M; ++ j )
			scanf("%d", &Mat[i][j]);

	bkt(1);

	printf("%d\n", Rez);
	return 0;
}