Pagini recente » Cod sursa (job #2323758) | Cod sursa (job #2705277) | Cod sursa (job #470307) | Cod sursa (job #3160109) | Cod sursa (job #458016)
Cod sursa(job #458016)
#include <stdio.h>
#include <stdlib.h>
#define FILE_IN "flip.in"
#define FILE_OUT "flip.out"
#define COMS(coms, i) (((coms >> i) & 1) ? -1 : 1)
int n, m;
int table[256];
int doSum (int comsN, int comsM)
{
int sum = 0;
int i, j;
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j)
{
//sum += table[i][j] * COMS(comsN, i) * COMS(comsM, j);
sum += (*((int*)table + (i * 16 + j))) * COMS(comsN, i) * COMS(comsM, j);
}
return sum;
}
int doSwitches ()
{
int maxSum = 0xFFFFFFFF;
int maxComsN = 1 << (n - 1);
int maxComsM = 1 << (m - 1);
int i, j;
for (i = 0; i < maxComsN; ++i)
for (j = 0; j < maxComsM; ++j)
{
int sum = doSum(i, j);
if (abs(sum) > maxSum)
maxSum = abs(sum);
}
return maxSum;
}
int main()
{
FILE* file;
int i, j;
file = fopen(FILE_IN, "r");
fscanf(file, "%d %d", &n, &m);
for (i = 0; i < n; ++i)
for (j = 0; j < m; ++j)
{
//fscanf(file, " %d", &(table[i][j]));//(int**)table + (((i * 16) + j) * sizeof(int)));
fscanf(file, " %d", (int*) table + (i * 16 + j));
}
fclose(file);
file = fopen(FILE_OUT, "w");
fprintf(stdout, "%d", doSwitches());
fclose(file);
return 0;
}