Pagini recente » Cod sursa (job #579733) | Cod sursa (job #650123) | Cod sursa (job #2866033) | Cod sursa (job #388633) | Cod sursa (job #1985104)
#include <fstream>
#include <set>
#include <queue>
#include <cstring>
using namespace std;
int frq[80000];
int main(){
int ma[20][20];
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m;
fin >> n >> m;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
fin >> ma[i][j];
queue <int> var;
var.push(0);
long long max = -(1LL << 50);
while(!var.empty()){
int cp;
cp = var.front();
long long r = 0, col;
for(int j = 1; j <= m; j++){
col = 0;
int t;
for(int i = 1; i <= n; i++){
t = 1;
if( cp & (1 << (i - 1)) )
t = -1;
col += ma[i][j] * t;
}
if(col < 0)
col *= -1;
r += col;
}
if(r > max)
max = r;
var.pop();
int p;
for(int i = 0; i < n; i++){
if( !(cp & (1 << i)) ){
p = cp | (1 << i);
if(!frq[p]){
frq[p] = 1;
var.push(p);
}
}
}
}
fout << max;
return 0;
}