Cod sursa(job #2346643)

Utilizator TiiberiuBujor Tiberiu-Cosmin Tiiberiu Data 17 februarie 2019 21:43:09
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.67 kb

#include <iostream>
#include <fstream>

int sum_max;

int suma_coloana(int nr_linii, int coloana, int matrice[20][20]) {
	int sum = 0;
	for (int i = 0; i < nr_linii; i++) {
		sum += matrice[i][coloana];
	}
	return sum;
}

int suma_linie(int coloane, int linie, int matrice[20][20]) {
	int sum = 0;
	for (int i = 0; i < coloane; i++)
		sum += matrice[linie][i];
	return sum;
}

void comuta_coloana(int linii, int coloana, int(*matrice)[20]) {

	for (int i = 0; i < linii; i++)
		matrice[i][coloana] *= -1;
}

void comuta_linie(int coloane, int linie, int(*matrice)[20]) {

	for (int i = 0; i < coloane; i++)
		matrice[linie][i] *= -1;
}


void suma_matrice(int nr_linii, int nr_coloane, int matrice[20][20]) {

	int i, j, sum = 0;

	for (i = 0; i < nr_coloane; i++) {
		if (suma_coloana(nr_linii, i, matrice) < 0) {
			comuta_coloana(nr_linii, i, matrice);
			for (j = 0; j < nr_linii; j++) {
				if (suma_linie(nr_coloane, j, matrice) < 0) {
					comuta_linie(nr_coloane, j, matrice);
					suma_matrice(nr_linii, nr_coloane, matrice);
				}
			}
			for (i = 0; i < nr_coloane; i++)
				sum += suma_coloana(nr_linii, i, matrice);
		}
		
		if (sum > sum_max)
			sum_max = sum;
	}

	//for (int t = 0; t < nr_linii; t++) {
	//	for (int u = 0; u < nr_coloane; u++)
	//		std::cout << matrice[t][u] << " ";
	//	std::cout << endl;
	//}

}

int main() {

	ifstream f("input.in");
	ofstream g("output.out");

	int n, m, matrice[20][20],i,j,k,l,ok=1;
	f >> n >> m;

	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			f >> matrice[i][j];

	suma_matrice(n, m, matrice);
	g << sum_max;


	f.close();
	g.close();

	return 0;
}