Pagini recente » Cod sursa (job #910497) | Cod sursa (job #549266) | Cod sursa (job #1317911) | Cod sursa (job #2126830) | Cod sursa (job #1576697)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m,Tabla[100][100];
int posib[100];
int sumaMax=-999999;
void citire()
{
f>>m>>n;
int i,j;
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
f>>Tabla[i][j];
}
void reverseLinii()
{
int i,j;
for(i=1;i<=m;i++)
{
if(posib[i]==1)
for(j=1;j<=n;j++)
Tabla[i][j]=Tabla[i][j]*(-1);
}
}
void reverseColoane(int j)
{
int i;
for(i=1;i<=m;i++)
Tabla[i][j]=Tabla[i][j]*(-1);
}
void coloanePos()
{
int i,j;
for(i=1;i<=m;i++)
{
if(posib[i]==1)
{for(j=1;j<=n;j++)
Tabla[i][j]=Tabla[i][j]*(-1);}
}
int sumaNor=0;
int sumaCom=0;
int lmax=0;
for(j=1;j<=n;j++)
{
sumaNor=0;
sumaCom=0;
for(i=1;i<=m;i++)
sumaNor+=Tabla[i][j];
reverseColoane(j);
for(i=1;i<=m;i++)
sumaCom+=Tabla[i][j];
if(sumaNor>sumaCom)
lmax=lmax+sumaNor;
else
lmax=lmax+sumaCom;
reverseColoane(j);
}
if(lmax>sumaMax)
sumaMax=lmax;
reverseLinii();
}
void liniiPos(int i)
{
if(i>m)
coloanePos();
else
{
int j;
for(j=0;j<=1;j++)
{
posib[i]=j;
liniiPos(i+1);
}
posib[i]=0;
}
}
int main()
{
citire();
liniiPos(1);
g<<sumaMax;
f.close();
g.close();
return 0;
}