Pagini recente » Cod sursa (job #2632717) | Cod sursa (job #2361671) | Cod sursa (job #182433) | Cod sursa (job #362464) | Cod sursa (job #1971814)
#include <stdio.h>
#define NMAX 16
int s [ NMAX ] ; /// Sumele pe linii
int mat [ NMAX ] [ NMAX ] ;
int s_c [ NMAX ] ; /// Sumele pe coloane
int s2 [ NMAX ] ;
int s_max ;
int parc_c (int m, int s_t ) {
int i ;
for (i = 1 ; i <= m ; i++ ) {
if ( s_c[i] <= 0 ) {
s_t += 2 * ( -s_c[i] ) ;
}
}
return s_t ;
}
void back ( int k, int n, int s_t, int m ) {
int i, j ;
if ( parc_c(m, s_t ) > s_max )
s_max = parc_c(m, s_t ) ;
if (k < n ) {
for (i = k+1 ; i <= n ; i++ ) {
//if (s[i] < 0 ) {
s2[i] = 1 ;
for (j = 1 ; j <= m ; j++ ) {
s_c[j] += 2 * (-mat[i][j]) ;
mat[i][j] = -mat[i][j] ;
}
back (i, n, s_t + 2 * (-s[i]), m ) ;
s2[i] = 0 ;
for (j = 1 ; j <= m ; j++ ) {
s_c[j] += 2 * (-mat[i][j]) ;
mat[i][j] = -mat[i][j] ;
}
// }
}
}
}
int main() {
FILE *fin, *fout ;
fin = fopen ("flip.in", "r" ) ;
fout = fopen ("flip.out", "w" ) ;
int n, i, j, m, sum, s_t ;
fscanf (fin, "%d%d", &n, &m ) ;
s_t = 0 ;
for (i = 1 ; i <= n ; i++ ) {
sum = 0 ;
for (j = 1 ; j <= m ; j++ ) {
fscanf (fin, "%d", &mat[i][j] ) ;
sum += mat[i][j] ;
}
s[i] = sum ;
s_t += sum ;
}
for (j = 1 ; j <= m ; j++ ) {
for (i = 1 ; i <= n ; i++ ) {
s_c[j] += mat[i][j] ;
}
}
for (i = 1 ; i < n ; i++ )
back (i, n, s_t, m) ;
fprintf (fout, "%d", s_max ) ;
return 0;
}