Pagini recente » Cod sursa (job #498315) | Cod sursa (job #1573409) | Cod sursa (job #1853185) | Cod sursa (job #1888781) | Cod sursa (job #2020450)
#include <stdio.h>
void update(int n, int m, int (*matrix)[17]) {
int i, j;
matrix[0][0] = 0;
for ( i = 1; i <= n; i++ ) {
matrix[i][0] = 0;
for ( j = 1; j <= m; j++ )
matrix[i][0] += matrix[i][j];
matrix[0][0] += matrix[i][0];
}
for ( j = 1; j <= m; j++ ) {
matrix[0][j] = 0;
for ( i = 1; i <= n; i++ )
matrix[0][j] += matrix[i][j];
}
}
void changeLine(int line, int m, int (*matrix)[17]) {
for ( int i = 1; i <= m; i++ )
matrix[line][i] *= -1;
}
void changeColumn(int column, int n, int (*matrix)[17]) {
for ( int i = 1; i <= n; i++ )
matrix[i][column] *= -1;
}
void copy(int n, int m, int (*matrix)[17], int (*aux)[17]) {
int i, j;
for ( i = 0; i <= n; i++ )
for ( j = 0; j <= m; j++ )
aux[i][j] = matrix[i][j];
}
int main() {
int matrix[17][17], aux[17][17];
int i, j, m, n, sum;
FILE *in, *out;
in = fopen("flip.in", "r");
if ( in == NULL ) return 1;
fscanf(in, "%d %d", &n, &m);
sum = 0;
for ( i = 1; i <= n; i++ )
for ( j = 1; j <= m; j++ ) {
fscanf(in, "%d", &matrix[i][j]);
aux[i][j] = matrix[i][j];
}
fclose(in);
update(n, m, matrix);
copy(n, m, matrix, aux);
sum = matrix[0][0];
for ( i = 1; i <= n; i++ )
for ( j = 1; j <= m; j++ ) {
while ( aux[i][0] < 0 || aux[0][j] < 0 ) {
if ( aux[i][0] < aux[0][j] ) changeLine(i, m, aux);
else changeColumn(j, n, aux);
update(n, m, aux);
if ( sum < aux[0][0] ) sum = aux[0][0];
}
copy(n, m, matrix, aux);
}
out = fopen("flip.out", "w");
if ( out == NULL ) return 1;
fprintf(out, "%d", sum);
fclose(out);
return 0;
}