Cod sursa(job #1503159)

Utilizator PlatonVPlaton Vlad PlatonV Data 15 octombrie 2015 17:44:09
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>

FILE* f;
FILE* g;
int	n, m, s;
int	a[16][16];
bool	flip[2][16];

void	check()
{
	int r = 0;
	for (int i = 0; i < n; ++i)
	{
		for (int j = 0; j < m; ++j)
		{
			if (flip[0][j] != flip[1][i])
			{
				r += -a[i][j];
			}
			else
			{
				r += a[i][j];
			}
		}
	}
	if (r > s)
		s = r;
}

void	solve(int i, int j)
{
	if (i == 1 && j == n)
	{
		check();
		return ;
	}
	flip[i][j] = 0;
	if (j == m && i == 0)
		solve(1, 0);
	else
		solve(i, j + 1);
	flip[i][j] = 1;
	if (j == m && i == 0)
		solve(1, 0);
	else
		solve(i, j + 1);
}

int	main()
{
	f = fopen("flip.in", "r");
	g = fopen("flip.out", "w");

	fscanf(f, "%d %d", &n, &m);
	for (int i = 0; i < n; ++i)
		for (int j = 0; j < m; ++j)
			fscanf(f, "%d", &a[i][j]);

	solve(0, 0);

	fprintf(g, "%d\n", s);
	return (0);
}