Pagini recente » Cod sursa (job #1635310) | Cod sursa (job #497302) | Cod sursa (job #1364808) | Istoria paginii utilizator/iancumarian96 | Cod sursa (job #2379168)
#include <stdio.h>
#include <string.h>
#define MAX 16
#define TRUE 1
#define FALSE 0
#define FOR(i, n) for(int i = 0; i < n; i++)
void read(FILE *in, int a[][MAX], int n, int m)
{
char c = 0;
FOR(i, n)
FOR(j, m)
fscanf(in, "%d", &a[i][j]);
}
int sum(int a[][MAX], int n, int m)
{
int l[MAX], c[MAX];
int b = 0;
int s = 0;
memset(l, 0, n * sizeof(int));
memset(c, 0, m * sizeof(int));
FOR(i, n)
FOR(j, m)
{
l[i] += a[i][j];
c[j] += a[i][j];
s += a[i][j];
}
do
{
b = 0;
FOR(i, n)
if (l[i] < 0)
{
b = 1;
l[i] *= -1;
s += 2 * l[i];
FOR(j, m)
a[i][j] *= -1;
}
FOR(j, m)
if (c[j] < 0)
{
b = 1;
c[j] *= -1;
s += 2 * c[j];
FOR(i, n)
a[i][j] *= -1;
}
} while (b);
return s;
}
int main()
{
FILE *in, *out;
int n, m;
int a[MAX][MAX];
in = fopen("flip.in", "r");
out = fopen("flip.out", "w");
fscanf(in, "%d%d", &n, &m);
read(in, a, n, m);
int c = sum(a, n, m);
fprintf(out, "%d\n", c);
fclose(in);
fclose(out);
return 0;
}