Pagini recente » Cod sursa (job #2529052) | Cod sursa (job #800962) | Cod sursa (job #399800) | Cod sursa (job #2539298) | Cod sursa (job #1910120)
#include <fstream>
#include <iostream>
#define INF 0x3f3f3f3f
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n, m, s[17], a[17], v[17][17];
int sumAbs, sumMax = -INF, sumFlip, l;
inline int abs(int number){
if (number < 0) return -number;
return number;
}
void display_sol(int k){
sumFlip = 0;
for(int i=1; i<=n; ++i){
sumAbs = 0;
for(int j=1; j<=m; ++j){
sumAbs += (a[j] ? -1 : 1) * v[i][j];
}
sumFlip += abs(sumAbs);
}
if(sumFlip > sumMax) sumMax = sumFlip;
}
void Back(int k)
{
if (k == l){
display_sol(l);
return;
}
for (int i = 1 + s[k-1]; i <= m-l+k; ++i){
s[k] = i;
a[s[k]] = 1;
Back(k+1);
a[s[k]] = 0;
}
}
int main()
{
f >> n >> m;
for(int i=1; i<=n; ++i){
for(int j=1; j<=m; ++j){
f >> v[i][j];
}
}
for(l = 1; l <= m; ++l){
Back(1);
}
g << sumMax << '\n';
}