Cod sursa(job #696314)

Utilizator andreidanAndrei Dan andreidan Data 28 februarie 2012 17:58:44
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
int comb[1000000]; 
int a[100][100],mat[100][100];

bool ex(int n,int i){
	if( (1<<i) & n ) return 1;
	return 0;
}

int main(){
	
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	
	int n,i,j,m,max=-11111111,in,su=0,supart=0,i2,j2;
	
	scanf("%d %d",&m, &n);
	
	for(i=1;i<=m;++i)
		for(j=1;j<=n;++j)
			scanf("%d", &a[i][j]);
		
	for(i=1;i<=m;++i)
			for(j=1;j<=n;++j)
				mat[i][j]=a[i][j];
	
	for( i=1 ; i<(1<<n) ; i++ ){
		su=0;
		for( j=0 ; (1<<j)<=i ; j++ ){
			if( ex(i,j) ){
				in=j+1;
				for(i2=1;i2<=m;++i2)
				mat[i2][in]=(a[i2][in])*(-1);
				
			}
		}
		
		for(i2=1;i2<=m;++i2){
			supart=0;
				for(j2=1;j2<=n;++j2)
					supart+=mat[i2][j2];
				if(supart<0) supart=supart*-1;
				su=su+supart;
				
		}
		if(su>=max) max=su;
		
		
		for(i2=1;i2<=m;++i2)
			for(j2=1;j2<=n;++j2)
				mat[i2][j2]=a[i2][j2];
		
			
	}
	printf("%d", max);

}