Cod sursa(job #1233219)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 24 septembrie 2014 22:52:31
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
// Craciun Catalin
//  Flip
//   Infoarena
#include <iostream>
#include <fstream>

#define NMax 20

using namespace std;

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

int n, m;
int A[NMax][NMax];
int S[NMax]; // Sign
bool found = false;
int maxim = 0;

inline int positive (int x) { if (x < 0) return -x; return x; }

int foundConfig() {
	
	int sum = 0;
	
	for (int i=1;i<=n;i++) {
		int scol = 0;
		for (int j=1;j<=m;j++)
			scol += A[i][j] * S[j];
		sum += positive(scol);
	}

	return sum;
}

void back(int x) {
	
	if (x == m+1) {
		if (!found) {
			maxim = foundConfig();
			found = true;
		} else {
			int value = foundConfig();
			if (maxim < value) {
				maxim = value;
			}
		}
	} else {
		S[x] = 1; back(x+1);
		S[x] = -1; back(x+1);
	}
}

int main() {
	
	f>>n>>m;
	for (int i=1;i<=n;i++)
		for (int j=1;j<=m;j++)
			f>>A[i][j];
	
	back(1);
	
	g<<maxim<<'\n';
	
	f.close(); g.close();
	
	return 0;
}