Cod sursa(job #97521)

Utilizator octavOctavian Voicu octav Data 7 noiembrie 2007 13:38:04
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>

#define MAXN 16
#define MAX(a, b) ((a) > (b) ? (a) : (b))

int main() {
	int n, m, i, j, k, a[16][16], s, s1, s2, maxsum;

	freopen("flip.in", "rt", stdin);
	freopen("flip.out", "wt", stdout);

	scanf("%d %d", &n, &m);
	for(i = 0; i < n; i++) {
		for(j = 0; j < m; j++) {
			scanf("%d", &a[i][j]);
		}
	}

	maxsum = 0;
	for(k = (1 << m); k >= 0; k--) {
		s = 0;
		for(i = 0; i < n; i++) {
			s1 = s2 = 0;
			for(j = 0; j < m; j++) {
				s1 += k & (1 << j) ? a[i][j] : - a[i][j];
				s2 -= k & (1 << j) ? a[i][j] : - a[i][j];
			}
			s += MAX(s1, s2);
		}
		if(maxsum < s) {
			maxsum = s;
		}
	}

	printf("%d\n", maxsum);

	return 0;
}