Cod sursa(job #561326)

Utilizator sebii_cSebastian Claici sebii_c Data 19 martie 2011 19:53:11
Problema Jocul Flip Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>

int A[20][20], tag[20];
int max = -1000000000;
int m, n;

void invers()
{
	int i, j, s;
	int total = 0;
	for (i=1; i<=n; ++i) {
		s = 0;
		for (j=1; j<=m; ++j)
			s += (A[i][j]*tag[j]);
		if (s<0)
			s *= -1;
		total += s;
	}
	if (total > max)
		max = total;
}

void generare(int k)
{
	if (k>m)
		invers();
	else {
		tag[k] = 1; 
		generare(k+1);
		tag[k] = -1;
		generare(k+1);
	}
}	

void citire()
{
	int i, j;	
	scanf("%d %d", &m, &n);
	for (i=1; i<=n; ++i)
		for (j=1; j<=m; ++j)
			scanf("%d", &A[i][j]);
}

int main()
{
	freopen("flip.in", "r", stdin);
	freopen("flip.out", "w", stdout);
	citire();
	generare(0);
	printf("%d\n", max);
	return 0;
}