Pagini recente » Cod sursa (job #10356) | Cod sursa (job #299742) | Cod sursa (job #1570780) | Cod sursa (job #609738) | Cod sursa (job #639945)
Cod sursa(job #639945)
#include <stdio.h>
#define max(a,b) ((a>b)?a:b)
using namespace std;
int a[20][20];
int n;
int m;
int maxim;
int b[64*1024+1][17];
//int c[64*1024+1][17];
void ceva(int n, int b[65547][17])
{
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(;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 y)
{
int s=0;
for(int i=0;i<n;++i)
{
for(int j=0;j<m;++j)
s+=a[i][j]*b[x][i]*c[y][j];
}
return s;
}*/
void rez()
{
int N=1<<n;
//int M=1<<m;
for(int i=0;i<N;++i)
{
/* for(int j=0;j<M;++j)
{
int s=suma(i,j);
maxim=max(maxim,s);
}*/
int s=0;
for(int j=0;j<n;j++)
{
int suma1=0;
int suma2=0;
for(int k=0;k<n;k++)
{
suma1+=a[k][j]*b[i][k];
suma2+=a[k][j]*b[i][k]*(-1);
}
s+=max(suma1,suma2);
}
maxim=max(maxim,s);
}
printf("%d",maxim);
}
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
citire();
rez();
return 0;
}