Cod sursa(job #1505350)

Utilizator George-AndreiGeorge Andrei George-Andrei Data 19 octombrie 2015 00:44:01
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<stdio.h>
int m, n, st[40] = { 0,1,0,1,0 };
long int v[20][20], copie[20][20], MAX;



int suma() {
	int s = 0, x, y;
	for (x = 0; x < n; x++)
		for (y = 0; y < m; y++) { 
			if (copie[x][y] == 1) s += -1 * v[x][y];
			else s += v[x][y];
		}
	return s;
}

void flip() {
	int i, j, k = 0, l;
	for (i = n - 1; i >= 0; i--) {
		l = 0;
		for (j = n; j < m + n; j++) {
			copie[k][l] = st[i] ^ st[j];
			++l;
		};
		++k;
	}
}


void maxim() {
	int i, x, j;
	flip();
	x = suma();
	if (x > MAX) MAX = x;
}

void back(int p) {
	int val;
	for (val = 0; val < 2; val++) {
		st[p] = val;
		if (p == m + n - 1) maxim();
		else back(p + 1);
	}


}

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