#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
typedef struct _Matrix{
int n;
int m;
int data[16][16];
} Matrix;
void read_data( Matrix *matrix )
{
int i, j;
FILE *f = fopen( "flip.in", "r" );
fscanf( f, "%i%i", &matrix->n, &matrix->m );
for ( i = 0; i < matrix->n; i++ )
for ( j = 0; j < matrix->m; j++ )
fscanf( f, "%i", &matrix->data[i][j] );
}
void write_response( int response )
{
FILE *f = fopen( "flip.out", "w" );
fprintf( f, "%i", response );
}
int matrix_sum( Matrix *matrix )
{
int sum = 0;
int i, j;
for ( i = 0; i < matrix->n; i++ )
for ( j = 0; j < matrix->m; j++ )
sum += matrix->data[i][j];
return sum;
}
int matrix_sum_line( Matrix *mat, int line )
{
int sum = 0;
int k;
for ( k = 0 ; k < mat->m; k++ )
sum += mat->data[line][k];
return sum;
}
int matrix_sum_column( Matrix *mat, int column )
{
int sum = 0;
int k;
for ( k = 0 ; k < mat->n; k++ )
sum += mat->data[k][column];
return sum;
}
int main()
{
//int max_sum = 0;
int sum = 0 ;
int i, j;
Matrix mat;
int cols[16] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0};
int lines[16] = {0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0};
read_data( &mat );
sum = matrix_sum( &mat );
for ( ;; ) {
int win_line = 0, win_col = 0;
for ( i = 0; i < mat.n; i++ )
lines[i] = matrix_sum_line( &mat, i );
for ( i = 0; i < mat.m; i++ )
cols[i] = matrix_sum_column( &mat, i );
for ( i = 0; i < mat.n; i++ )
if ( lines[i] < 0 )
win_line += - lines[i];
for ( i = 0; i < mat.m; i++ )
if ( cols[i] < 0 )
win_col += - cols[i];
if ( win_line <= 0 && win_col <= 0 )
break ;
if ( win_line > win_col ) {
for ( i = 0; i < mat.n; i++ ) {
if ( lines[i] < 0 ) {
for ( j = 0; j < mat.m; j++ )
mat.data[i][j] *= -1;
}
}
sum += 2 * win_line;
}
if ( win_col > win_line ) {
for ( j = 0; j < mat.m; j++ ) {
if ( cols[j] < 0 ) {
for ( i = 0; i < mat.n; i++ )
mat.data[i][j] *= -1;
}
}
sum += 2* win_col;
}
}
write_response( sum );
return 0;
}