Cod sursa(job #91840)

Utilizator frEak-Calin Paul frEak- Data 13 octombrie 2007 15:55:19
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
//melc.
#include<stdio.h>
int n,m,max;
int a[16][16];
void citire()
{
	freopen("flip.in","r",stdin);
	scanf("%d %d\n",&n,&m);
	for (int i=0;i<n;i++)
		for (int j=0;j<m;j++)
			scanf("%d",&a[i][j]);
	fclose(stdin);
	max=0;
}

void fleep(int x,int y) //1 col/2 lin
{
	if (y==1)
		for (int ii=0;ii<n;ii++)
			a[ii][x]*=(-1);
	else
		for (int jj=0;jj<m;jj++)
			a[x][jj]*=(-1);
}

void maxi()
{
	int aux;
	for (int k=0;k<m;k++)
	{
		aux=0;
		for (int k1=0;k1<n;k1++)
			aux+=a[k1][k];
		if (aux<0) fleep(k,1);
	}
	aux=0;
	for (int k1=0;k1<n;k1++)
		for (int k2=0;k2<m;k2++)
			aux+=a[k1][k2];
	if (aux>max) max=aux;
}

void becu_vietii(int x)
{
	if (x==n) maxi();
	else
	{
		becu_vietii(x+1);
		fleep(x,2);
		becu_vietii(x+1);
		fleep(x,2);
	}
}

int main()
{
	citire();
    becu_vietii(0);
	freopen("flip.out","w",stdout);
	printf("%d",max);
	fclose(stdout);
	return 0;
}