Cod sursa(job #372423)

Utilizator titusuTitus C titusu Data 9 decembrie 2009 23:44:26
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <cstdio>
using namespace std;

int a[20][20], n,m, smax , x[20];

void testSol(int k){
	int i,j,scur=0,scol;
	for(i=1;i<=n;i++)
		if(x[i]==1)
			for(j=1;j<=m;j++)
				a[i][j] *=-1;

	for(int j=1;j<=m;j++){
		scol=0;
		for(i=1;i<=n;++i)
			scol+=a[i][j];
		if(scol>0)
			scur+=scol;
		else
			scur-=scol;
	}
	if(scur>smax)
		smax=scur;
		
	for(i=1;i<=n;i++)
		if(x[i]==1)
			for(j=1;j<=m;j++)
				a[i][j] *=-1;
}

void back(int k){
	for(int i=0;i<2;i++){
		x[k]=i;
		if(k==n)
			testSol(k);
		else
			back(k+1);
	}
}

int main(){
	freopen("flip.in","r",stdin);
	scanf("%d%d", &n, &m);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++)
			scanf("%d",&a[i][j]);
	/*for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++)
			printf("%3d",a[i][j]);
		printf("\n");
	}*/
	back(1);
	
	freopen("flip.out","w",stdout);
	printf("%d\n", smax);
	return 0;
}