Cod sursa(job #836743)

Utilizator mihaiSimuSimu Mihai mihaiSimu Data 16 decembrie 2012 18:17:25
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <stdio.h>
#include <bitset>
using namespace std;
int n,m,a[17][17],bestSol=-1000000000,v[17];
bitset<17> b;

void doSum(){
	
	for(int j=0;j<m;j++)
		v[j]=0;
	
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++)
			v[j]+=(b[i]?a[i][j]:(-1)*a[i][j]);
	}
	int sum=0;
	for(int j=0;j<m;j++)
		if(v[j]>0) sum+=v[j];
			else sum+=(-1)*v[j];
	if(sum>bestSol)
		bestSol=sum;		
}

void back(int nivel){
	if(nivel==n) doSum();
	else{
		b[nivel]=0;
		back(nivel+1);
		b[nivel]=1;
		back(nivel+1);
	}
}

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