Cod sursa(job #2587862)

Utilizator TyrasAndrei Cristian Vlad Tyras Data 23 martie 2020 17:37:36
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <iostream>
#include <fstream>
float n, m;
int A[16][16], stiva[257];
using namespace std;

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

int comutare(int x, int y) {
	int c = 0, suma = 0;
	while (c < m) {
		suma += A[x][c] * (-1);
		c++;
	}
	c = 1;
	while (c < n) {
		suma += A[c][y] * (-1);
		c++;
	}
	return suma;
}

int valid(int k, int x, int y) {
	int suma = comutare(x, y);
	if (suma > stiva[k]) {
		stiva[k + 1] = suma;
		return 1;
	} else
		return 0;
}

int solutie(int k) {
	return k == n * m;
}

int tipar(int k) {
	int suma = stiva[k];
	return suma;
}

void backtr(int k) {
	stiva[1] = 0;
	for(int i = 0; i < n; i++)
		for (int j = 0; j < m; j++) {
			if (valid(k, i, j)) { // daca noua suma calculata pe comutatorul k este mai mare fata de suma maxima din stiva
				if (solutie(k)) // daca sa ajuns la cea mai mare suma
					fout << stiva[k]; //tipareste suma
				else
					backtr(k + 1);
			} else
				backtr(k + 1); 
		}
}

int main()
{
	fin >> n >> m;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			fin >> A[i][j];		
	backtr(1);
	return 0;
}