Cod sursa(job #52146)

Utilizator sir_icemasterGeorge Guraliuc sir_icemaster Data 17 aprilie 2007 22:30:14
Problema Jocul Flip Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>
#define NMAX 16
int n, m, t[NMAX][NMAX];
int s, smax;
int on[NMAX], copy[NMAX][NMAX];

void gen(int k) {
	if (k == n) {
		int i, j, scol;
		s = 0;
		for (i = 0; i < n; ++i) {
			if (on[i])
				for (j = 0; j < m; ++j) {
					copy[i][j] = -t[i][j];
					s += copy[i][j];
				}
			else
				for (j = 0; j < m; ++j) {
					copy[i][j] = t[i][j];
					s += copy[i][j];
				}
		}
		for (j = 0; j < m; ++j) {
			scol = 0;
			for (i = 0; i < n; ++i)
				scol += copy[i][j];
			if (scol < 0)
				s -= 2*scol;
		}
		if (smax < s)
			smax = s;
	}
	else {
		on[k] = 0;
		gen(k+1);
		on[k] = 1;
		gen(k+1);
	}
}

int main() {
	int i, j;
	FILE * fi = freopen("flip.in", "r", stdin);
	FILE * fo = freopen("flip.out", "w", stdout);
	scanf("%d%d", &n, &m);
	for (i = 0; i < n; ++i)
		for (j = 0; j < m; ++j)
			scanf("%d", &t[i][j]);
	gen(0);
	printf("%d", smax);
	return 0;
}