Pagini recente » Cod sursa (job #580054) | Cod sursa (job #745186) | Cod sursa (job #902153) | Cod sursa (job #2880291) | Cod sursa (job #1668532)
#include <iostream>
#include <fstream>
using namespace std;
struct data {
int a[20][20];
};
int n,m;
long long int sumaMax;
void getSol(int level,data date) {
if(level==n) {
long long int suma=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
suma+=date.a[i][j];
if(suma>sumaMax)
sumaMax=suma;
return;
}
for(int j=0;j<m;j++) {
getSol(level+1,date);
for(int i=0;i<n;i++)
date.a[i][j]*=-1;
getSol(level+1,date);
}
for(int j=0;j<m;j++)
date.a[level][j]*=-1;
for(int j=0;j<m;j++) {
getSol(level+1,date);
for(int i=0;i<n;i++)
date.a[i][j]*=-1;
getSol(level+1,date);
}
}
int main()
{
ifstream fin("flip.in");
ofstream fout("flip.out");
data date;
fin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
fin>>date.a[i][j];
getSol(0,date);
fout<<sumaMax;
return 0;
}