Pagini recente » Cod sursa (job #2710259) | Cod sursa (job #3166872) | Cod sursa (job #398401) | Cod sursa (job #138067) | Cod sursa (job #58671)
Cod sursa(job #58671)
#include <stdio.h>
#define N 16
#define M 16
int b[N][M];
int n, m;
int sum()
{
int s, i, j;
for (s = 0, i = 0; i < n; ++i)
for (j = 0; j < m; ++j)
s += b[i][j];
return s;
}
void flipr(int r)
{
int i;
for (i = 0; i < m; ++i)
b[r][i] = -b[r][i];
}
void flipc(int c)
{
int i;
for (i = 0; i < n; ++i)
b[i][c] = -b[i][c];
}
int flipctest(int c)
{
int s, sf, i;
for (s = 0, sf = 0, i = 0; i < n; ++i) {
s += b[i][c];
sf += -b[i][c];
}
if (sf > s) return 1;
return 0;
}
int fliprtest(int r)
{
int s, sf, i;
for (s = 0, sf = 0, i = 0; i < m; ++i) {
s += b[r][i];
sf += -b[r][i];
}
if (sf > s) return 1;
return 0;
}
int main(int argc, char *argv[])
{
FILE *in, *out;
int i, j, s, s1;
in = fopen("flip.in", "r");
out = fopen("flip.out", "w");
fscanf(in, "%d", &n);
fscanf(in, "%d", &m);
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j) {
fscanf(in, "%d", &b[i][j]);
}
do {
s = sum();
for (i = 0; i < n; ++i)
if (fliprtest(i)) flipr(i);
for (j = 0; j < m; ++j)
if (flipctest(j)) flipc(j);
s1 = sum();
} while (s1 > s);
fprintf(out, "%d", sum());
fclose(in); fclose(out);
return 0;
}