Cod sursa(job #2654766)

Utilizator StefanSanStanescu Stefan StefanSan Data 2 octombrie 2020 11:20:40
Problema Jocul Flip Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include      <iostream>
#include      <fstream>
#include      <algorithm>
#include      <queue>
#include      <vector>
#include      <stack>

using namespace std;

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

int n, m, mat[20][20], maxi;

void flipLine(int l) {
	for (int i = 0; i < m; i++)mat[l][i] *= -1;
}

void flipColumn(int c) {
	for (int i = 0; i < n; i++)mat[i][c] *= -1;
}

void sol() {
	int sum = 0, ps = 0;
	for (int i = 0; i < n; i++) {
		ps = 0;
		for (int j = 0; j < m; j++) {
			ps += mat[i][j];
		}
		if (ps > 0) sum += ps;
		else sum -= ps;
	}
	if (sum > maxi) maxi = sum;
}

void back(int l) {
	if (l == n)sol();
	else {
		back(l + 1);
		flipLine(l);
		back(l + 1);
		flipColumn(l);
	}
}

int main() {
	ios::sync_with_stdio(false);
	in.tie(NULL), out.tie(NULL);

	in >> n >> m;

	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			in >> mat[i][j];
		}
	}
	back(0);
	out << maxi;
	
	return 0;
	 
}