Pagini recente » Cod sursa (job #2119679) | Cod sursa (job #2775287) | Cod sursa (job #1720816) | Cod sursa (job #983128) | Cod sursa (job #1458700)
#include <fstream>
#include <iostream>
#define LL long long
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
LL N,M, A[20][20], L[20], C[20],cod,tmp,tot,maxi;
void inversare(int i){
L[i] *= -1;
for(int j = 0;j<M;j++){
A[i][j] *= -1;
C[j] += A[i][j]*2;
tot += A[i][j]*2;
}
}
void solve(){
int i,j;
for(i = 0;i<(2<<N);i++){
for(j = 0;j<N;j++){
if(i & (1 << j) && (L[j] > 0)) inversare(j);
else
if(L[j] < 0) inversare(j);
}
tmp = tot;
for(j = 0;j<M;j++){
if(C[j] < 0){
tmp+=C[j]*-2;
}
}
if(tmp > maxi) maxi = tmp;
}
}
int main(){
int i,j;
fin >> N >> M;
for(i = 0;i<N;i++)
for(j = 0;j<M;j++){
fin >> A[i][j];
L[i] += A[i][j];
C[j] += A[i][j];
tot+=A[i][j];
}
solve();
fout << maxi;
return 0;
}