Cod sursa(job #1012657)

Utilizator Mastertrap21Danceanu Madalin Mastertrap21 Data 19 octombrie 2013 14:51:49
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include<fstream>
using namespace std;

#define N 17
long A[N][N];
short n, m, rowT[N], colT[N];
long long maxSum = 0;

ifstream f("flip.in");
ofstream g("flip.out");

void citire()
{	
	f>>n>>m;
	for(int i=0; i<n; i++)
	{
		for(int j=0; j<m; j++)
		{
			f>>A[i][j];
		}
	}
}

void sumCheck()
{
	long long sum = 0;
	long long colSumA[N], colSumB[N];
	for(int i=0; i<m; i++)
	{
		colSumA[i] = 0;
		colSumB[i] = 0;
		for(int j=0; j<n; j++)
		{
			colSumA[i] += rowT[j] * A[j][i];
			colSumB[i] += -1 * rowT[j] * A[j][i];
		}
		if(colSumA[i] > colSumB[i]) sum += colSumA[i];
		else sum += colSumB[i];
	}
	if(sum > maxSum) maxSum = sum;
}

void rowBT(int c)
{
	if(c == n)
	{
		sumCheck();
	}
	else
	{
		rowT[c] = 1;
		rowBT(c+1);
		rowT[c] = -1;
		rowBT(c+1);
	}
}

void afisare()
{
	g<<maxSum;
}

int main()
{
	std::ifstream instead;
	using namespace std;
	using std::ifstream;
	citire();
	rowBT(0);
	afisare();
	f.close();
	g.close();
	return 0;
}