Cod sursa(job #479270)

Utilizator ovydewParvu Ovidiu ovydew Data 23 august 2010 15:09:02
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
// Jocul Flip

#include <fstream>

using namespace std;

int suma, n, m;
int** matr;

int abs(int x) {
	if (x<0) return -x;
	else return x;
}

void bkt(int nr) {
	if (nr==n+1) {
		int sum_tot = 0;
		for (int i=1; i<=m; i++) {
			int sum_col = 0;
			for (int j=1; j<=n; sum_col+= matr[j][i], j++);
			sum_tot += abs(sum_col);
		}
		if (sum_tot>suma)
			suma = sum_tot;
		return;
	}
	bkt(nr+1);
	for (int i=1; i<=m; matr[nr][i]=-matr[nr][i], i++);
	bkt(nr+1);
	for (int i=1; i<=m; matr[nr][i]=-matr[nr][i], i++);
}

int main() {
	ifstream fin("flip.in");
	ofstream fout("flip.out");
	fin >> n >> m;
	matr = new int*[n+1];
	for (int i=1; i<=n; i++) 
		matr[i] = new int[m+1];
	for (int i=1; i<=n; i++) {
		for (int j=1; j<=m; j++) {
			fin >> matr[i][j];
		}
	}
	bkt(1);
	fout << suma << endl;
	fin.close();
	fout.close();
	return 0;
}