Cod sursa(job #89228)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 6 octombrie 2007 11:37:46
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include<stdio.h>
int v[16][16],m,n,i,j,x,v1[15],v2[15],s,max;
void inm_linia(){
	int s;
	s=0;
	for (j=0;j<m;++j){
		s=s+v[i][j];
	}
	if (s<0){
		for (i=0;i<n;++i)
			v[i][j]=v[i][j]*(-1);
	}
}
void inm_coloana(){
	int s;
	s=0;x=0;
	for (j=0;j<m;++j){
		s=s+v[j][i];
	}
	if (s<0){
		for (j=0;j<n;++j){
			v[j][i]=v[j][i]*(-1);
			x=x+v[j][i];
		}
	}
}
int putere(int n){
	int temp2=1;
	for (int temp=0;temp<n;++temp)
		temp2*=2;
	return temp2;
}
void baza(){
	int baz=0,a;
	a=i;
	while (a!=0){
		baz=baz+1;
		v1[baz]=a%2;
		a=a/2;
	}
	a=j;
	while (a!=0){
		baz=baz+1;
		v2[baz]=a%2;
		a=a/2;
	}
}
void compara(){
	s=0;
	for (i=0;i<n;++i)
		if (v1[i]==1)inm_linia();
	for (i=0;i<m;++i)
		if (v2[i]==1)inm_coloana();
	for (i=0;i<n;++i)
		for (j=0;j<m;++j)
			s=s+v[i][j];
}
int main(){
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%d %d",&n,&m);
	for (i=0;i<n;++i){
		for (j=0;j<m;++j)
			scanf("%d ",&v[i][j]);
	}
	max=-1000001;s=0;
	for (i=1;i<putere(n+1);++i){
		for (j=putere(m);i<putere(m+1);++j){
			baza();
			compara();
			if (s>max) max=s;
		}
	}
	printf("%d\n",max);
	fclose(stdin);
	fclose(stdout);
	return 0;
}