Cod sursa(job #64508)

Utilizator c_sebiSebastian Crisan c_sebi Data 3 iunie 2007 18:36:31
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>

int a[16][16], nl, nc, v[16];
long long  int SMax=-3200000*10000;

void read()
{
	int i, j;
	FILE *f=fopen ("flip.in", "r");
	fscanf (f, "%d %d", &nl, &nc);
	for (i=0; i<nl; ++i)
		for (j=0; j<nc; ++j)
			fscanf (f, "%d", &a[i][j]);
	fclose(f);
}

void sol()
{
	int i, j;
	long long s, S;
	for (i=0; i<nc; ++i)
		if (v[i])
			for (j=0; j<nl; ++j)
				a[j][i]*=-1;
	for (S=0, i=0; i<nl; ++i)
		{for (s=0, j=0; j<nc; ++j)
				s+=a[i][j];
		if (s<0) s=-s;
		S+=s;
		}
	for (i=0; i<nc; ++i)
		if (v[i])
			for (j=0; j<nl; ++j)
				a[j][i]*=-1;
	if (S>SMax) SMax=S;
}


void gen_bin(int k)
{
	int i;
	if (k==nc) sol();
	else
		for (i=0; i<2; ++i)
			{
				v[k]=i;
				gen_bin(k+1);
			}
}

int main()
{
	read();
	gen_bin(0);
	FILE *g=fopen ("flip.out", "w");
	fprintf (g, "%lld\n", SMax);
	fclose(g);
	return 0;
}