Pagini recente » Cod sursa (job #226635) | Cod sursa (job #686849) | Cod sursa (job #676031) | Cod sursa (job #3276774) | Cod sursa (job #3307114)
#include <fstream>
#include <vector>
#include <cmath>
using namespace std;
ifstream cin("flip.in");
ofstream cout("flip.out");
#define int long long
vector<vector<int> >arr;
vector<vector<int> >ari;
int n,m;
int b2(int x)
{
vector<int>v;
int r=0;
while (x)
{
v.push_back(x%2);
x/=2;
}
int yo=v.size();
for (int i=yo-1; i>=0; i--) r=r*10+v[i];
return r;
}
int sz(int x)
{
int cnt=0;
while (x)
{
cnt++;
x/=10;
}
return cnt;
}
int pt(int a,int b)
{
int aa=a;
for (int i=1; i<b; i++) aa*=a;
return aa;
}
void flipc(vector<vector<int> >& v, int x)
{
for (int i=0; i<n; i++) v[i][x]*=-1;
}
int32_t main()
{
int cf=0;
cin>>n>>m;
arr.resize(n);
for (int i=0; i<n; i++) arr[i].resize(m);
for (int i=0; i<n; i++)
{
for (int j=0; j<m; j++) cin>>arr[i][j];
}
for (int i=0; i<pt(2,m); i++)
{
ari=arr;
int y=b2(i),c=0,cnt=0;
int dn=sz(y);
while (y)
{
c++;
if (y%10==1) flipc(ari,c+m-dn-1);
y/=10;
}
for (int j=0; j<n; j++)
{
int cm=0,cp=0;
for (int h=0; h<m; h++)
{
if (ari[j][h]<0) cm+=ari[j][h]*(-1);
else cp+=ari[j][h];
}
cnt+=max(cm-cp,cp-cm);
}
if (cnt>cf) cf=cnt;
}
cout<<cf;
}