Pagini recente » Cod sursa (job #712531) | Cod sursa (job #766360) | Cod sursa (job #1990492) | Istoria paginii runda/wrt | Cod sursa (job #2130831)
#include <stdio.h>
typedef struct structure
{
int plus, minus;
}struc;
void readfrom(int *n, int *m, int a[20][20])
{
FILE *f; int i, j;
f = fopen("flip.in", "r");
fscanf(f, "%d %d", n, m);
for (i = 0; i < *n; i++)
for (j = 0; j < *m; j++)
fscanf(f, "%d", &a[i][j]);
fclose(f);
}
void output(long long s)
{
FILE *g;
g = fopen("flip.out", "w");
fprintf(g, "%lli", s);
fclose(g);
}
void black_magic(int n, int m, int a[20][20])
{
int i, j; struc x[n], y[m];
for (i = 0; i < n; i++)
{
x[i].plus = x[i].minus = 0;
for (j = 0; j < m; j++)
{
x[i].plus += a[i][j];
x[i].minus += (-1) * a[i][j];
}
}
for (i = 0; i < m; i++)
{
y[i].plus = y[i].minus = 0;
for (j = 0; j < n; j++)
{
y[i].plus += a[j][i];
y[i].minus += (-1) * a[j][i];
}
}
long long sum = 0;
for (i = 0; i < n; i++)
{
if (x[i].minus > x[i].plus)
{
for (j = 0; j < m; j++)
a[i][j] *= -1;
}
}
for (i = 0; i < m; i++)
{
if (y[i].minus > y[i].plus)
{
for (j = 0; j < n; j++)
a[j][i] *= -1;
}
}
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
sum += a[i][j];
output(sum);
}
int main(void)
{
int n, m, a[20][20];
readfrom(&n, &m, a);
black_magic(n, m, a);
return (0);
}