Pagini recente » Cod sursa (job #1561680) | Cod sursa (job #431731) | Cod sursa (job #3259519) | Cod sursa (job #676570) | Cod sursa (job #1845192)
#include <fstream>
#define nmax 17
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int a[nmax][nmax],n,m;
int x[nmax*2];
int s, l[nmax];
int sum[nmax*2];
void read()
{ int i,j;
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{fin>>a[i][j];
s+=a[i][j];
l[i]+=a[i][j];
}
}
void schimb(int k, int&s)
{ int j;
if(x[k]>0)
for(j=1;j<=m;j++)
{a[x[k]][j]=-a[x[k]][j];
s+=a[x[k]][j];}
else
{int p=-x[k];
for(j=1;j<=n;j++)
{a[j][p]=-a[j][p];
s+=a[j][p];}
}
}
void Back(int k)
{ int i;
for(i=x[k-1]+1;i<=n;i++)
if(i!=0)
{ x[k]=i;
int su=0;
schimb(k,su);
sum[k]=sum[k-1]+2*su;
if(s<sum[k]) s=sum[k];
if(x[k]<n) Back(k+1);
schimb(k,su);
}
}
int main()
{ read();
x[0]=-m-1;
sum[0]=s;
Back(1);
fout<<s<<endl;
return 0;
}