Pagini recente » Cod sursa (job #1228266) | Cod sursa (job #557352) | Cod sursa (job #783176) | Cod sursa (job #2536201) | Cod sursa (job #1268760)
#include <stdio.h>
FILE *fin, *fout;
long int sum, max, sum1;
int m, n;
unsigned long int c, temp, pwr[16];
bool *v, f;
int main()
{
fin = fopen("flip.in", "r");
fout = fopen("flip.out", "w");
pwr[0] = 1;
for(int i =1; i< 16; i++) pwr[i] = pwr[i-1]*2;
fscanf(fin, "%d%d", &m, &n);
v = new bool[m];
int arr1[m][n], arr2[m][n];
for(int i= 0; i< m; i++)
{
for(int j =0; j< n; j++)
{
fscanf(fin, "%d", &arr1[i][j]);
}
}
max = -999999999;
for(c = 0;c<pwr[m]; c++)
{
for(int i = 0; i< m; i++) v[i] = 0;
for(int i = 0; i< m; i++)
for(int j= 0; j< n; j++)
arr2[i][j] = arr1[i][j];
temp = c;sum = 0;
for(int i =0; temp; i++)
{
v[m-i] = temp%2;
temp = temp/2;
}
for(int i = 0; i< m; i++)
{
if(!v[i]) continue;
for(int j= 0; j< n; j++)
{
arr2[i][j]*=-1;
}
}
for(int i = 0; i< n; i++)
{
sum1 = 0;
for(int j =0; j< m; j++) sum1+=arr2[j][i];
if(sum1 < 0) sum-=sum1;
else sum+=sum1;
}
if(!f)
{
f = 1;
max = sum;
continue;
}
if(sum > max) max = sum;
}
fprintf(fout, "%d", max);
fclose(fin);
fclose(fout);
return 0;
}