Cod sursa(job #1184488)

Utilizator dalv_1337Pasita Vlad dalv_1337 Data 12 mai 2014 20:49:56
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
using namespace std;

const int DimMax = 17;

int nrlin, nrcol, mat[DimMax][DimMax], semn[DimMax];

void Init();

inline int suma_mat()
{
	int s=0, x, i, j;
	for (i=1; i<=nrlin; ++i) { // calculez suma pentru fiecare linie
		x=0;
		for (j=1; j<=nrcol; ++j) x+=mat[i][j]*semn[j];
		s+=(x<0 ? -x : x); // daca e nevoie sa comut linia curenta
	}
	
	return s;
}

int main()
{
	Init();

	int maxim=0, x, i;
	while (semn[0]==1) { // fac toate aranjamentele pentru nrcol valori {-1,1}, fiind suficient doar pt coloane
		x = suma_mat(); // suma elementelor matricei, avand deja o configuratie a comutarilor coloanelor
		if (x>maxim) maxim=x;
        i=nrcol;
        while (semn[i]==-1) semn[i--]=1;
        semn[i]=-1;
    }

	ofstream fOut("flip.out");
	fOut<<maxim;

	return 0;
}

void Init()
{
	ifstream fIn("flip.in");

	fIn>>nrlin>>nrcol;
	for (int j,i=1; i<=nrlin; ++i)
		for (j=1; j<=nrcol; ++j) fIn>>mat[i][j];

	for (int i=0; i<=nrcol; ++i) semn[i]=1;
}