Pagini recente » Cod sursa (job #316904) | Cod sursa (job #1578349) | Cod sursa (job #2838224) | Cod sursa (job #1629156) | Cod sursa (job #1873037)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int N,M,A[20][20],ch[20],rs;
int calcsum(int ch[],int x,bool u){
int p=0;
for (int i=1;i<=M;i++){
if (u){
if (ch[i]) p+=-A[x][i];
else p+=A[x][i];
}
else {
if (ch[i]) p+=A[x][i];
else p+=-A[x][i];
}
}
return p;
}
void check(int ch[]){
int partsum=0,sum1=0;
//for (int i=1;i<=M;i++) cout <<ch[i]<<" ";
//cout <<endl;
for (int j=1;j<=M;j++)
for (int i=1;i<=N;i++) if (ch[j]) sum1+=-A[i][j];
else sum1+=A[i][j];
for (int i=1;i<=N;i++){
//int x1,x2;
//x1=calcsum(ch,i,0)
partsum+=max(calcsum(ch,i,0),calcsum(ch,i,1));
//cout <<calcsum(ch,i,0)<<" "<<calcsum(ch,i,1)<<endl;
//cout <<partsum<<endl;
}
//cout <<sum1<<" "<<partsum<<endl;
rs=max(rs,max(sum1,partsum));
}
void back(int ch[],int x){
if (x==M) {
ch[x]=0;
check(ch);
ch[x]=1;
check(ch);
return ;
}
ch[x]=0;
back(ch,x+1);
ch[x]=1;
back(ch,x+1);
}
int main(){
fin >>N>>M;
for (int i=1;i<=N;i++)
for (int j=1;j<=M;j++) cin >>A[i][j];
back(ch,1);
fout <<rs;
return 0;
}