Cod sursa(job #218142)

Utilizator johnny2008Diaconu Ion johnny2008 Data 31 octombrie 2008 23:14:42
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
FILE *f;
int m,n,sm;
int a[18][18];
int b[18];

int max(int a1,int a2){
	return a1>a2?a1:a2;
}
int sum(){
	int s=0;
	int i,j;
	for (i=1;i<=m;i++){
		if (b[i]){
			for (j=1;j<=n;j++){
				a[j][i]*=-1;
			}
		}
	}
	
	for(i=1; i<=n;i++){
		int sl=0;
		for(j=1;j<=m;j++){
			sl+=a[i][j];
		}
		if (sl<0){
			sl*=-1;
		}
		s+=sl;
	}
	for (i=1;i<=m;i++){
		if (b[i]){
			for (j=1;j<=n;j++){
				a[j][i]*=-1;
			}
		}
	}
	return s;
}
int back(int p){
	if (p>m) {sm=max(sum(),sm);}
	else {for (b[p]=0;b[p]<=1;b[p]++){
				back(p+1);
		  }
	}
	
	return sm;
}
int main(void){
	f=fopen("flip.in","r");
	fscanf(f,"%d %d",&n,&m);
    int i,j;
    
 	for (i=1;i<=n;i++){
		for (j=1;j<=m;j++){
			fscanf(f,"%d",&a[i][j]);
		}
	}
	fclose(f);
	f=fopen("flip.out","w");
	fprintf(f,"%d",back(1));
	fclose(f);
}