Pagini recente » Cod sursa (job #3272804) | Cod sursa (job #2533132) | Cod sursa (job #1721415) | Cod sursa (job #2678371) | Cod sursa (job #2242141)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f ("flip.in");
ofstream g ("flip.out");
int v [17][17] , v2 [17][17] , n , m;
inline void fliprow (int row){
int i;
for(i = 1 ; i <= m ; ++ i)
v2 [row][i] = 0 - v2 [row][i];
}
inline void flipcol (int column){
int i;
for(i = 1 ; i <= n ; ++ i)
v2 [i][column] = 0 - v2 [i][column];
}
inline int sum (){
int S = 0;
for(int i = 1 ; i <= n ; ++ i)
for(int j = 1 ; j <= m ; ++ j)
S += v2 [i][j];
return S;
}
inline void bestop (){
int i , j;
for(i = 1 ; i <= m ; ++ i){
int s1 = 0;
for(j = 1 ; j <= n ; ++ j)
s1 += v2 [j][i];
int s2 = 0;
flipcol (i);
for(j = 1 ; j <= n ; ++ j)
s2 += v2 [j][i];
if (s1 > s2)
flipcol (i);
}
}
int main()
{
int i , j , best = 0;
f >> n >> m;
for(i = 1 ; i <= n ; ++ i)
for(j = 1 ; j <= m ; ++ j)
f >> v [i][j];
for(i = 1 ; i < (1 << (n + 1)) ; ++ i){
for(int o = 1 ; o <= n ; ++ o)
copy (v [o] + 1 , v [o] + m + 1 , v2 [o] + 1);
for(j = 0; (1 << j) <= i ; j ++)
if ((1 << j) & i)
fliprow (j + 1);
bestop ();
best = max (sum () , best);
}
g << best;
return 0;
}