Pagini recente » Cod sursa (job #2085953) | Cod sursa (job #2188853) | Cod sursa (job #673525) | Cod sursa (job #2005607) | Cod sursa (job #2240040)
#include <fstream>
#include <cmath>
#define Nmax 18
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n, m;
int a[Nmax][Nmax], b[Nmax][Nmax];
int niv, niv2,stot;
int v[Nmax], w[Nmax];
int ans;
/*
void bkt2(int p)
{
if(p == niv2+1)
{
int s=0;
for ( int i = 1; i <= niv; i ++ )
for ( int j = 1; j <= niv2; j ++ )
s=s+(-1)*a[v[i]][w[j]];
ans=max(ans, s);
//for ( int i = 1; i <= niv2; i ++ )
// g << w[i] << " ";
// g << '\n';
}
else
{
for ( int i = w[p-1]+1; i <= m; i ++ )
{
w[p]=i;
bkt2(p+1);
}
}
}
void bkt(int p)
{
if(p == niv+1)
{ //for ( int i = 1; i <= niv; i ++ )
// g << v[i] << " "; g << '\n';
for (niv2=1; niv2 <= m ; niv2 ++ )
bkt2(1);
//g << '\n';
//g << '\n';
}
else
{
for ( int i = v[p-1]+1; i <= n; i ++ )
{
v[p]=i;
bkt(p+1);
}
}
}
*/
void calc()
{
int s=0;
for ( int i = 1; i <= n; i ++ )
for ( int j = 1; j <= m; j ++ )
s+=w[j]*v[i]*a[i][j];
ans=max(ans, s);
}
int main()
{
f >> n >> m;
for ( int i = 1; i <= n; i ++ )
for ( int j = 1; j <= m; j ++ )
f >> a[i][j], stot+=a[i][j];
int pn=(1 << n);
int pm=(1 << m);
for ( int i = 1; i < pn; i ++ )
{
for ( int j = 0; j < n; j ++ )
if(i&(1 << j))
{
for ( int k = 1; k <= m; k ++ )
b[j+1][k]=-a[j+1][k];
}
else
{
for ( int k = 1; k <= m; k ++ )
b[j+1][k]=a[j+1][k];
}
int sum=0;
for ( int j = 1; j <= m; j ++ )
{
int s=0;
for ( int u = 1; u <= n ; u ++ )
s+=b[u][j];
sum+=fabs(s);
}
ans=max(ans, sum);
}
g << ans;
return 0;
}