Cod sursa(job #414441)

Utilizator cristiprgPrigoana Cristian cristiprg Data 10 martie 2010 08:19:22
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#include <climits>
#define DIM 32

int a[DIM][DIM], m, n, max = INT_MIN, flip[DIM];

void verif()
{
	int s = 0;
	for (int i = 1; i <= n; ++i)
	{
		int sum = 0;
		for (int j = 1; j <= m; ++j)	sum += a[i][j] * flip[j];
		s += (sum > 0)?sum:-sum;
	}
	if (s > max)	max = s;
}

void back(int k)
{
	if (k > m)
	{
		verif();
		return;
	}
	
	flip[k] = 1;
	back(k+1);
	flip[k] = -1;
	back(k+1);
}

int main()
{
	FILE *f = fopen("flip.in", "r");
	fscanf(f, "%d%d", &n, &m);
	for (int i = 1; i <= n; ++i)
		for (int j = 1; j <= m; ++j)
			fscanf(f, "%d", &a[i][j]);
	fclose(f);
	back(1);
	f = fopen("flip.out", "w");
	fprintf(f, "%d\n", max);
	fclose(f);
	
	return 0;
}