Pagini recente » Cod sursa (job #1587872) | Cod sursa (job #1322244) | Cod sursa (job #2124876) | Cod sursa (job #2289073) | Cod sursa (job #955069)
Cod sursa(job #955069)
#include <fstream>
#include <string.h>
#include <algorithm>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
#define Dmax 17
#define Minim -256000001
int n,m,a[Dmax][Dmax],k,move[2*Dmax],st[2*Dmax];
long long S;
char viz[2*Dmax];
void init()
{
f>>n>>m;
for(short i=1;i<=n;i++)
for(short j=1;j<=m;j++) f>>a[i][j];
k=n+m;
}
void solve(int st[2*Dmax])
{
for(int l=1;l<=n;l++)
if(st[l]==1)for(int j=1;j<=m;j++)a[l][j]*=(-1);
for(int c=n+1;c<=n+m;c++)
if(st[c]==1)for(int i=1;i<=n;i++)a[i][c]*=(-1);
long long s=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++) s+=a[i][j];
S=max(S,s);
}
void back(int varf)
{
if(varf!=k+1)
{
st[varf]=0; back(varf+1);
st[varf]=1; back(varf+1);
}
else
{
// for(short i=1;i<=k;i++) g<<st[i]<<" ";
// g<<'\n';
solve(st);
}
}
int main()
{
init();
memset(viz,0,k);
S=Minim;
back(1);
g<<S<<'\n';
f.close();g.close();
return 0;
}