Pagini recente » Cod sursa (job #1831080) | Cod sursa (job #1751093) | Cod sursa (job #217687) | Cod sursa (job #1705260) | Cod sursa (job #2602921)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
int v[16][16],v0[16][16],g[16];
int n,m,s,st,M;
long long scol(long long j){
s=0;
for(long long i=0;i<n;i++) s+=v[i][j];
return s;
}
void chcol(long long j){
if(scol(j)<0) for(long long i=0;i<n;i++) v[i][j]*=-1;
}
long long sline(long long i){
s=0;
for(long long j=0;j<m;j++) s+=v[i][j];
return s;
}
void chline(long long i){
if(sline(i)<0) for(long long j=0;j<m;j++) v[i][j]*=-1;
}
void changeline(){
for(long long i=0;i<n;i++) for(long long j=0;j<m;j++) v[i][j]=v0[i][j]*g[i];
}
void changecol(){
for(long long i=0;i<n;i++) for(long long j=0;j<m;j++) v[i][j]=v0[i][j]*g[j];
}
void changeg(){
for(long long i=0;i<=min(n,m);){
if(g[i]==1){g[i]=-1;i++;}
else{g[i]=1;break;}
}
}
long long stot(){
st=0;
for(long long i=0;i<n;i++) for(long long j=0;j<m;j++) st+=v[i][j];
return st;
}
int main()
{
in>>n>>m;
for(int i=0;i<min(m,n);i++) g[i]=-1;
for(int i=0;i<n;i++) for(int j=0;j<m;j++){in>>v0[i][j];v[i][j]=v0[i][j];}
if(m>=n){
for(long long i=0;i<pow(2,n);i++){
changeline();
for(long long j=0;j<m;j++) chcol(j);
if(stot()>M) M=stot();
changeg();
}
}
else{
for(long long j=0;j<pow(2,m);j++){
changecol();
for(long long i=0;i<n;i++) chline(i);
if(stot()>M) M=stot();
changeg();
}
}
out<<M;
}