Cod sursa(job #2206664)

Utilizator Florin77Nacu Florin Florin77 Data 23 mai 2018 12:17:09
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<iostream>
#include<fstream>
using namespace std;

int n, m, a[100][100], st[200];

int suma(int a[100][100], int n, int m)
{
	int s1 = 0;
	for (int o = 1; o <= n; o++)
		for (int O = 1; O <= m; O++)
			s1 += a[o][O];
	return s1;
}

void bktr(int k, int & max)
{
	int b[100][100], s;
	for (int i = -1; i <= 1; i = i + 2)
	{
		st[k] = i;
		if (k == n + m)
		{
			for (int p = 1; p <= n; p++)
				for (int q = 1; q <= m; q++)
					b[p][q] = a[p][q];
			for (int p = 1; p <= k; p++)
				if (st[p] == -1)
				{
					if (p <= n)
						for (int j = 1; j <= m; j++)
							b[p][j] = b[p][j] * (-1);
					else
						for (int j = 1; j <= n; j++)
							b[j][p - n] = b[j][p - n] * (-1);
				}
			s = suma(b, n, m);
			if (s > max)
				max = s;
		}
		else
			bktr(k + 1,max);
	}
}

int main()
{
	ifstream f("flip.in");
	f >> n >> m;
	for (int i = 1; i <= n; i++)
		for (int j = 1; j <= m; j++)
			f >> a[i][j];
	f.close();
	int max = suma(a, n, m);
	bktr(1,max);
	ofstream g("flip.out");
	g << max;
	g.close();
}