Cod sursa(job #2346576)

Utilizator gabi08Dron Ionut-Gabriel gabi08 Data 17 februarie 2019 20:26:52
Problema Jocul Flip Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define nmax 20
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m;
int s[nmax];
int v[nmax][nmax];
void Read();
int flip(int k);
int flip_2(int k);
int main()
{
	Read();
	fout << max(flip(1), flip_2(1));
	return 0;
	system("pause");
}
void Read()
{
	fin >> n >> m;
	for (int i = 1; i <= n; ++i)
	{
		for (int j = 1; j <= m; ++j)
		{
			fin >> v[i][j];
		}
	}
}
int flip(int k)
{
	if (k + 1 == n)
	{
		int sum = 0;
		for (int i = 1; i <= n; ++i)
		{
			int sum2 = 0;
			for (int j = 1; j <= m; ++j)
			{
				sum2 += v[i][j] * s[j];
			}
			sum += abs(sum2);
		}
		return sum;
	}
	else
	{
		s[k] = 1;
		int val1 = flip(k + 1);
		s[k] = -1;
		int val2 = flip(k + 1);
		return val1 > val2 ? val1 : val2;
	}
}
int flip_2(int k)
{
	if (k + 1 == m)
	{
		int sum = 0;
		for (int i = 1; i <= m; ++i)
		{
			int sum2 = 0;
			for (int j = 1; j <= n; ++j)
			{
				sum2 += v[i][j] * s[j];
			}
			sum += abs(sum2);
		}
		return sum;
	}
	else
	{
		s[k] = 1;
		int val1 = flip(k + 1);
		s[k] = -1;
		int val2 = flip(k + 1);
		return val1 > val2 ? val1 : val2;
	}
}