Pagini recente » Cod sursa (job #1839236) | Cod sursa (job #1115951) | Cod sursa (job #2732911) | Cod sursa (job #99847) | Cod sursa (job #1460759)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *in,*out;
int m, n, i, j, k, aux;
int a[18][18], s_line[18], aux_line[18];
long long sum, sum_aux;
int main()
{
in=fopen("flip.in","r");
out=fopen("flip.out","w");
fscanf(in,"%d %d",&n,&m);
for (i = 1; i <= n; i++)
{
for (j = 1; j <= m; j++)
{
fscanf(in,"%d",&a[i][j]);
s_line[i] += a[i][j];
sum += a[i][j];
}
}
for (k = 1; k < (1 << m); k++)
{
sum_aux = 0;
memcpy(aux_line, s_line, 18*sizeof(int));
for (j = 1; j <= m; j++)
{
if ((1 << (j-1)) & k) //flip coloana j
{
for (i = 1; i <= n; i++)
{
aux_line[i] -= (2*a[i][j]);
}
}
}
for (i = 1; i <= n; i++)
{
if (aux_line[i] < 0)
{
aux_line[i] *= -1; //flip linia i
}
sum_aux += aux_line[i];
}
if (sum_aux > sum)
sum = sum_aux;
}
fprintf(out,"%lld",sum);
fclose(in);
fclose(out);
return 0;
}