Pagini recente » Cod sursa (job #1756911) | Cod sursa (job #1945194) | Borderou de evaluare (job #2034751) | Cod sursa (job #641205) | Cod sursa (job #1184488)
#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;
}