Cod sursa(job #715059)

Utilizator lukkerLiNoimi Semain lukker Data 16 martie 2012 16:17:45
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <iostream>
using namespace std;

ifstream f("flip.in");
ofstream f2("flip.out");

int m,n;
long long tabel[17][17];
bool sm[17]={false},sm2[17]={false};
long long s=0;

void suma() {
	long long s2=0;
	long long col[17]={0};
	long long vec[17][17];
	for(int i=1;i<=m;i++) {
		for(int j=1;j<=n;j++) {
			if(sm[i]) vec[i][j]=(-1)*tabel[i][j];
			else vec[i][j]=tabel[i][j];
			col[j]+=vec[i][j];
		}
	}
	for(int i=1;i<=n;i++)
		if(col[i]<0) sm2[i]=true;
	for(int i=1;i<=m;i++) {
		for(int j=1;j<=n;j++) {
			if(sm2[j]) vec[i][j]*=-1;
			s2+=vec[i][j];
		}
	}
	//cout<<s2<<" ";
	if(s<s2) s=s2;
}

void back(int k) {
	if(k==n+1) suma();
	else {
		sm[k]=1;back(k+1);
		sm[k]=0;back(k+1);
	}
}

int main() {
	f>>m>>n;
	for(int i=1;i<=m;i++) {
		for(int j=1;j<=n;j++) {
			f>>tabel[i][j];
		}
	}
	back(1);
	f2<<s;
	return 0;
}