Cod sursa(job #50474)

Utilizator tvladTataranu Vlad tvlad Data 7 aprilie 2007 19:42:05
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>

const int N = 16;
const int M = 16;
const int INF = 2000000000;

int n,m;
int a[N][M];
int max = -INF;
bool swl[M];

void coloane() {
	int s[M] = {0};
	for (int i = 0; i<n; ++i)
		for (int j = 0; j<m; ++j)
			s[j] += (swl[i]) ? -a[i][j] : a[i][j];
	int ss = 0;
	for (int j = 0; j<m; ++j)
		ss += (s[j] < 0) ? -s[j] : s[j];
	if (ss > max) max = ss;
}

void linii ( int k ) {
	swl[k] = false;
	if (k == n-1)
		coloane(); else
		linii(k+1);
	swl[k] = true;
	if (k == n-1)
		coloane(); else
		linii(k+1);
}

int main() {
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);

	scanf("%d %d",&n,&m);
	if (n < m) {
		for (int i = 0; i<n; ++i)
			for (int j = 0; j<m; ++j) scanf("%d",&a[i][j]);
	} else {
		for (int i = 0; i<n; ++i)
			for (int j = 0; j<m; ++j) scanf("%d",&a[j][i]);
		int x = n; n = m; m = x;
	}
	
	linii(0);
	
	printf("%d\n",max);
}