Cod sursa(job #905146)

Utilizator tudorv96Tudor Varan tudorv96 Data 5 martie 2013 17:06:45
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
using namespace std;

int v[17][17], m, n, sl[17], x[17], MAX = -16000001, s, sol[17];

void Check ()
{
	s = 0;
	for (int i = 0; i < m; ++i)
		for (int j = 0; j < n; ++j)
			s += x[j] * v[i][j];
	if (MAX < s)
	{
		MAX = s;
		for (int i = 0; i < n; ++i)
			sol[i] = x[i];
	}
}

void Back (int k)
{
	for (int i = 0; i < 2; ++i)
	{
		x[k] = -1 + i * 2;
		if (k == n - 1)
			Check ();
		else
			Back (k + 1);
	}
}

int main ()
{
	ifstream fin ("flip.in");
	fin >> m >> n;
	for (int i = 0; i < m; ++i)
		for (int j = 0; j < n; ++j)
			fin >> v[i][j];
	fin.close ();
	Back (0);
	for (int i = 0; i < m; ++i)
		for (int j = 0; j < n; ++j)
		{
			v[i][j] *= sol[j];
			sl[i] += v[i][j];
		}
	s = 0;
	for (int i = 0; i < m; ++i)
		s += sl[i] > 0 ? sl[i] : -sl[i]; 
	ofstream fout ("flip.out");
	fout << s;
	fout.close();
	return 0;
}