Pagini recente » Cod sursa (job #149143) | Cod sursa (job #1827261) | Cod sursa (job #2533797) | Istoria paginii template/despre-infoarena | Cod sursa (job #1205342)
#include <fstream>
using namespace std;
int sumaMatrice(int n, int m, int matrix[16][16])
{
int suma = 0;
for (int i = 0; i < n; i ++)
for (int j = 0; j < m; j ++)
suma += matrix[i][j];
return suma;
}
int incrementVector(char *vector, int length)
{
for (int i = length - 1; i >= 0; i --)
if (vector[i] == 0)
{
vector[i] ++;
for (int j = i + 1; j < length; j ++)
vector[j] = 0;
return 1;
}
return 0;
}
int joculFlip(int n, int m, int matrix[16][16])
{
int suma, aux, length = n + m;
char *vector = (char*)calloc(n + m, sizeof(char));
suma = sumaMatrice(n, m, matrix);
for (;;)
{
if (incrementVector(vector, length) == 0)
break;
aux = suma;
for (int i = 0; i < n; i ++)
for (int j = 0; j < m; j ++)
if ( (vector[i] == 0 && vector[n + j] == 1) || (vector[i] == 1 && vector[n + j] == 0) )
aux -= 2 * matrix[i][j];
if (aux > suma)
suma = aux;
}
free(vector);
return suma;
}
int main(int argc, char** argv)
{
int n, m, matrix[16][16];
ifstream in("flip.in");
ofstream out("flip.out");
in >> n;
in >> m;
for (int i = 0; i < n; i ++)
for (int j = 0; j < m; j ++)
in >> matrix[i][j];
out << joculFlip(n, m, matrix);
in.close();
out.close();
return 0;
}