Cod sursa(job #1455964)

Utilizator GilgodRobert B Gilgod Data 29 iunie 2015 16:02:38
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>

const char IN[] = "flip.in", OUT[] = "flip.out";
const int NMAX = 16;
const int INF = 0x3f3f3f3f;

using namespace std;

int N, M;
int A[NMAX][NMAX];
int row[NMAX], col[NMAX];
int maxSum = -INF;

inline void read_data() {
	freopen(IN, "r", stdin);
	scanf("%d %d", &N, &M);
	for (int i = 0; i < N; ++i)
		for (int j = 0; j < M; ++j)
			scanf("%d", &A[i][j]);
	fclose(stdin);
}

int getsgn(int val, int rank) {
	return (val & (0x1 << rank)) ? -1 : 1;
}

int main() {
	read_data();
	for (int sgn = 0; sgn < (1 << N); ++sgn) {
		int s = 0;
		for (int j = 0; j < M; ++j) {
			int ss = 0;
			for (int i = 0; i < N; ++i)
				ss += A[i][j] * getsgn(sgn, i);
			if (ss < 0) ss = -ss;
			s += ss;
		}
		if (s > maxSum) maxSum = s;
	}

	fprintf(fopen(OUT, "w"), "%d\n", maxSum	);
	return 0;
}