Pagini recente » Cod sursa (job #2228450) | Cod sursa (job #415457) | Cod sursa (job #2904715) | Cod sursa (job #925616) | Cod sursa (job #2468454)
#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std;
int n,m;
int a[18][18];
int su=0;
int ns=0;
void bc(int c);
void bl(int c);
void check();
void read()
{
ifstream fin ("flip.in");
fin >> n >> m;
/*
a=(int**)malloc(n*sizeof(int*));
for(int i=0;i<n;i++)
{
a[i]=(int*)malloc(sizeof(int)*m);
}
*/
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
fin >> a[i][j];
}
}
fin.close();
}
/*
void freea()
{
for(int i=0;i<n;i++)
{
free(a[i]);
}
free(a);
}
*/
int lsum(int l)
{
int s=0;
for(int i=0;i<m;i++)
{
s+=a[l][i];
}
return s;
}
int csum(int c)
{
int s=0;
for(int i=0;i<n;i++)
{
s+=a[i][c];
}
return s;
}
void sl(int l)
{
a[l][m]=-a[l][m];
ns=ns+2*a[l][m];
}
void sc(int c)
{
a[n][c]=-a[n][c];
ns=ns+2*a[n][c];
}
void print(int s)
{
ofstream fout("flip.out");
fout << s << endl;
fout.close();
}
void check()
{
su = max(su,ns);
}
void bl(int l)
{
check();
if(l<n)
{
sl(l);
for(int i=l+1;i<n;i++)
bl(i);
for(int i=0;i<m;i++)
bc(i);
sl(l);
}
}
void bc(int c)
{
check();
if(c<m)
{
sc(c);
for(int i=c+1;i<m;i++)
bc(c+1);
sc(c);
}
}
int main()
{
read();
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
ns+=a[i][j];
}
}
for(int i=0;i<n;i++)
{
a[i][m]=lsum(i);
}
for(int i=0;i<m;i++)
{
a[n][i]=csum(i);
}
su = ns;
for(int i=0;i<n;i++)
bl(i);
print(su);
//printa();
//freea();
return 0;
}