Cod sursa(job #195768)

Utilizator andrei.ismailIsmail Andrei-Adnan andrei.ismail Data 21 iunie 2008 18:56:53
Problema Jocul Flip Scor 40
Compilator c Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>

#define MAX 16
#define INFTY 1000000000

int a[MAX][MAX];
int m, n;

int main(void) {
	FILE *fin, *fout;
	int i, j, flipx, flipy, sum, max_sum;

	fin = fopen("flip.in", "rt");
	fscanf(fin, "%d %d\n", &n, &m);
	for (i = 0; i < n; i++)
		for (j = 0; j < m; j++)
			fscanf(fin, "%d", &a[i][j]);
	fclose(fin);

	max_sum = -INFTY;
	for (flipx = 0; flipx < (1 << m); ++flipx)
		for (flipy = 0; flipy < (1 << n); ++flipy) {
			sum = 0;
			for (i = 0; i < n; i++)
				for (j = 0; j < m; j++) {
					int elem = a[i][j];
					if (flipy & (1 << i)) elem *= -1;
					if (flipx & (1 << j)) elem *= -1;
					sum += elem;
				}
			if (sum > max_sum)
				max_sum = sum;
		}

	fout = fopen("flip.out", "wt");
	fprintf(fout, "%d\n", max_sum);
	fclose(fout);

	return 0;
}