Pagini recente » Cod sursa (job #1515584) | Cod sursa (job #1070572) | Cod sursa (job #1021191) | Cod sursa (job #2032734) | Cod sursa (job #639960)
Cod sursa(job #639960)
#include <stdio.h>
#define max(a,b) ((a>b)?a:b)
using namespace std;
int a[20][20];
int n;
int m;
long long maxim;
int b[64*1024+3][18];
//int c[64*1024+1][17];
void ceva(int n, int b[65549][18])
{
for(int i=0;i<n;++i)
b[0][i]=1;
int k=2<<n;
for(int i=1;i<k;++i)
{
int j=0;
for(;j<n && b[i-1][j]==-1;b[i][j++]=1);
b[i][j++]=-1;
for(;j<n;b[i][j]=b[i-1][j++]);
}
}
void citire()
{
scanf("%d %d",&n,&m);
for(int i=0;i<n;++i)
{
for(int j=0;j<m;++j)
{
scanf("%d",&a[i][j]);
}
}
ceva(n,b);
//ceva(m,c);
}
int suma(int x)
{
int s=0;
int suma1;
int suma2;
for(int j=0;j<m;j++)
{
suma1=0;
suma2=0;
for(int i=0;i<n;i++)
{
suma1+=a[i][j]*b[x][i];
suma2+=a[i][j]*b[x][i]*(-1);
}
if(suma1>suma2)
s+=suma1;
else
s+=suma2;
}
return s;
}
void rez()
{
int N=1<<n;
//int M=1<<m;
for(int i=0;i<N;++i)
{
maxim=max(maxim,suma(i));
}
printf("%d",maxim);
}
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
citire();
rez();
return 0;
}