Cod sursa(job #1264707)

Utilizator GrandmasterSoucup Bogdan Grandmaster Data 16 noiembrie 2014 01:26:37
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <set>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <utility>
#include <string>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <limits>
#include <sstream>
#include <deque>
#include <bitset>
#include <complex>
#include <functional>
#include <memory>
#include <numeric>
#define x first
#define y second
typedef std::pair<int, int> pii;

using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int x[1000], y[1000], a[17][17], n, m, cn[1000], cm[1000], Max = -999999, yy[1000], s = 0;
void back1(int k)
{
	if(k - 1 == m)
	{
		for(int i = 1; i <= n; i++)
		{
			if(cn[i] == 1)
			{
				for(int f = 1; f <= n; f++)
					for(int g = 1; g <= m; g++)
						a[f][i] = a[f][i] * (-1);
			}
		}
		for(int i = 1; i <= m; i++)
		{
			if(cm[i] == 1)
			for(int f = 1; f <= n; f++)
				for(int g = 1; g <= m; g++)
					a[m][g] = a[m][g] * (-1);
		}
		for(int i = 1; i <= n; i++)
			for(int j = 1; j <= m; j++)
				s += a[i][j];
		if(Max < s)
			Max = s;
		s = 0;
	}
	else
		for(int i = 1; i <= 2; i++)
		{
			cm[k] = i;
			yy[i] = 1;
			back1(k + 1);
			yy[i] = 0;
		}
}
void back(int z)
{
	if(z - 1 == n)
	{
		back1(1);
	}
	else
		for(int i = 1; i <= 2; i++)
		{
			cn[z] = i;
			y[i] = 1;
			back(z + 1);
			y[i] = 0;
		}
}

int main () {
	fin >> n >> m;
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
			fin >> a[i][j];
	back(1);
	fout << Max;
	return 0;
}