Pagini recente » Cod sursa (job #3196340) | Cod sursa (job #2088869) | Cod sursa (job #2023866) | Cod sursa (job #2439736) | Cod sursa (job #1335972)
#include <fstream>
using namespace std;
int a[22], n, m, b[22][22], c[22][22];
int main()
{
int i, k,j, suma, s, smax;
// citire
ifstream fin ("flip.in");
fin>>n>>m;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
fin>>b[i][j];
fin.close();
smax = -1000000000;
while (a[0] == 0)
{
// parcurg a si daca a[i]=1, atunci schimb semnul la coloana i
for (i = 1; i <= m; i++)
if (a[i] == 0)
// iau coloana i din b si o copii in c
for (k=1; k<= n; k++)
c[k][i] = b[k][i];
else // a[i] = 1, deci schimb semnul coloanei i
for (k=1;k<=n;k++)
c[k][i] = -b[k][i];
// parcurg liniile matricei c si calculez suma in modul pe fiecare linie
suma = 0;
for (i=1;i<=n;i++)
{
s = 0; // suma de pe linia i
for (k=1;k<=m;k++)
s=s+c[i][k];
if (s < 0) s = -s;
suma += s;
}
// actualizez daca e cazul suma maxima
if (suma > smax) smax = suma;
// urmatorul sir de biti
i=m;
while (a[i] == 1)
{
a[i] = 0;
i--;
}
a[i]=1;
}
ofstream fout ("flip.out");
fout<<smax;
fout.close();
return 0;
}