Cod sursa(job #742116)

Utilizator caliuxSegarceanu Calin caliux Data 28 aprilie 2012 16:18:14
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream.h>
#include <stdio.h>
#include <string.h>
int n, m, k, i, j, ns;
int st[20], mat[20][20], vec[20];
long long suma = 0, sumamax = 0;
void citeste(){
	freopen( "flip.in", "r", stdin);
	freopen( "flip.out", "w", stdout);
	cin >> n; cin >> m;
	for( i = 1; i <= n; i++){
		for( j = 1; j <=m; j++){
			cin >> mat[i][j];
			sumamax += mat[i][j];
		}
	}
}

void scrie(){
	printf("%lld ", sumamax);
}

void calcul(){
	
	memset( vec, 0, sizeof(vec) );
	for( k = 1 ; k <= n; k++){
		for( j = 1; j <= m; j++ ){
			vec[j] += mat[k][j] * st[j];
		}
	}
	suma = 0;
	for( k = 1; k <= m; k++ ){
		if( vec[k] < 0 ){
			suma += vec[k] * (-1);
		}else{
			suma += vec[k];
		}
	}
	if( suma > sumamax ){
		sumamax = suma;
	}
}

void genereaza(){
	ns = ( 1 << n ) - 1;
	for( i = 0; i <= ns ; ++i){
		memset( st, 0, sizeof(st) );
		for( j = 0; j < n; ++j ){
			if( i & ( 1 << j ) ){
				st[j] = -1;
			}else{
				st[j] = 1;
			}
		}
		calcul();
	}
}

int main(){
	citeste();
	genereaza();
	scrie();
}