Pagini recente » Cod sursa (job #236395) | Cod sursa (job #190434) | Cod sursa (job #2707355) | Cod sursa (job #2516511) | Cod sursa (job #2637162)
#include <stdio.h>
#include <stdlib.h>
void ver_turn(long** v, int n, int m)
{
int i, j;
long poz = 0, neg = 0;
for (j = 0; j < m; j++)
{
for (i = 0; i < n; i++)
{
if (v[i][j] < 0) neg += v[i][j];
else poz += v[i][j];
}
if (((-1) * neg) > poz)
{
for (i = 0; i < n; i++)
{
v[i][j] = v[i][j] * (-1);
}
}
neg = 0;
poz = 0;
}
neg = 0;
poz = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if (v[i][j] < 0) neg += v[i][j];
else poz += v[i][j];
}
if (((-1) * neg) > poz)
{
for (j = 0; j < m; j++)
{
v[i][j] = v[i][j] * (-1);
}
}
neg = 0;
poz = 0;
}
}
long total(long** v, int n, int m)
{
int i, j;
long sum = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
sum += v[i][j];
}
}
return sum;
}
int main()
{
long **vec, sum;
int i, j, n, m;
FILE* in = fopen("flip.in", "rt");
FILE* out = fopen("flip.out", "wt");
fscanf(in, "%d %d\n", &n, &m);
vec = calloc(n, sizeof(long*));
for (i = 0; i < n; i++)
{
vec[i] = calloc(m, sizeof(long));
}
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
fscanf(in, "%ld", &vec[i][j]);
}
}
long pre;
while (0)
{
ver_turn(vec, n, m);
pre = total(vec, n, m);
ver_turn(vec, n, m);
sum = total(vec, n, m);
if (sum <= pre) break;
}
fprintf(out, "%ld\n", sum);
for (i = 0; i < n; i++)
{
free(vec[i]);
}
free(vec);
fclose(in);
fclose(out);
return 0;
}