Cod sursa(job #1261923)

Utilizator ENiGMAAxinte Sebastian ENiGMA Data 12 noiembrie 2014 20:39:16
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include<fstream>

using namespace std;

int tabla[15][15], n, m, answer = 0;
bool OK = false;

int column_sum(int column);
int line_sum(int line);
int change_line(int column);
int change_column(int line);

int main(){
	ifstream input("flip.in");
	input >> n >> m;
	for (int i = 0; i < n; i++){
		for (int j = 0; j < m; j++){
			input >> tabla[i][j];
		}
	}
	input.close();
	do{
		OK = true;
		for (int i = 0; i < n; i++){
			if (line_sum(i) < change_line(i))
			{
				OK = false;
			}
			else{
				change_line(i);
			}
			for (int j = 0; j < m; j++){
				if (column_sum(j) < change_column(j)){
					OK = false;
				}
				else{
					change_column(j);
				}
			}
		}


	} while (!OK);

	for (int i = 0; i < n; i++){
		for (int j = 0; j < m; j++)
		{
			answer += tabla[i][j];
		}
	}

	ofstream output("flip.out");
	output << answer;
	output.close();
	return 0;

}

int column_sum(int column){
	int sum = 0;
	for (int i = 0; i < n; i++){
		sum += tabla[i][column];
	}
	return sum;
}

int line_sum(int line){
	int sum = 0;
	for (int j = 0; j < m; j++){
		sum += tabla[line][j];
	}
	return sum;
}

int change_line(int line){
	for (int j = 0; j < m; j++){
		tabla[line][j] *= -1;
	}
	return line_sum(line);
};

int change_column(int column){
	for (int i = 0; i < n; i++){
		tabla[i][column] *= -1;
	}
	return column_sum(column);
};