Cod sursa(job #1448312)

Utilizator BopecovBolocan Petre Cosmin Vlad Bopecov Data 6 iunie 2015 17:06:42
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.37 kb
#include <iostream>
#include <fstream>

using namespace std;

double sum_collumn(double a[16][16], int m, int j, int r){
	double suma = 0;
	for (int i = 0; i < m; i++)
		suma = suma + a[j][i]*r;
	return suma;
};

double sum_row(double a[16][16], int n, int j, int r){
	double suma = 0;
	for (int i = 0; i < n; i++)
		suma = suma + a[i][j]*r;
	return suma;
};

int main(){
	int n, m;
	double a[16][16];
	ifstream ifile("flip.in");
	ofstream ofile("flip.out");

	ifile >> n >> m;

	for (int i = 0; i < n; i++)
	for (int j = 0; j < m; j++)
		ifile >> a[i][j];
	
	for (int i = 0; i < n; i++){
		for (int j = 0; j < m; j++)
			ofile << a[i][j] << " ";
		ofile << endl;
	}
	ofile << endl;

	int gata = 1;

	while (gata){
		gata = 0;
		for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++){
			if ((sum_collumn(a, m, i, -1) + 2 * a[i][j] > sum_collumn(a, m, i, 1) + 2 * a[i][j]) && ((sum_row(a, n, j, -1) + 2 * a[i][j]) >(sum_row(a, n, j, 1) + 2 * a[i][j]))){
				for (int x = 0; x < m; x++) a[i][x] *= -1;
				for (int y = 0; y < n; y++) a[y][j] *= -1;
				cout << endl << "||" << i << "  " << j << "||" << sum_collumn(a, m, i, -1) - 2 * a[i][j] << "  " << sum_collumn(a, m, i, 1) - 2 * a[i][j] << endl;

				gata = 1;
				for (int i = 0; i < n; i++){
					for (int j = 0; j < m; j++)
						ofile << a[i][j] << " ";
					ofile << endl;
				}
				ofile << endl;
			}
			else if (sum_collumn(a, m, i, -1) > sum_collumn(a, m, i, 1) && sum_row(a, n, j, -1) > sum_row(a, n, j, 1)){
				if (sum_collumn(a, m, i, -1) - sum_collumn(a, m, i, 1) > sum_row(a, n, j, -1) - sum_row(a, n, j, 1)){
					for (int y = 0; y < n; y++) a[y][j] *= -1;
					gata = 1;
					cout << endl << "|+|" << i << "  " << j << "|+|" << endl;
					for (int i = 0; i < n; i++){
						for (int j = 0; j < m; j++)
							ofile << a[i][j] << " ";
						ofile << endl;
					}
					ofile << endl;
				}
				else {
					for (int x = 0; x < m; x++) a[i][x] *= -1;
					gata = 1;
					cout << endl << "|1|" << i << "  " << j << "|1|" << endl;
					for (int i = 0; i < n; i++){
						for (int j = 0; j < m; j++)
							ofile << a[i][j] << " ";
						ofile << endl;
					}
					ofile << endl;
				}
			}
			else if (sum_collumn(a, m, i, -1) > sum_collumn(a, m, i, 1) && sum_row(a, n, j, -1) < sum_row(a, n, j, 1)){
				for (int x = 0; x < m; x++) a[i][x] *= -1;
				cout << endl << "|2|" << i << "  " << j << "|2|" << endl;
				for (int i = 0; i < n; i++){
					for (int j = 0; j < m; j++)
						ofile << a[i][j] << " ";
					ofile << endl;
				}
				ofile << endl;
			}
			else if (sum_collumn(a, m, i, -1) < sum_collumn(a, m, i, 1) && sum_row(a, n, j, -1) > sum_row(a, n, j, 1)){
				for (int y = 0; y < n; y++) a[y][j] *= -1;
				cout << endl << "|3|" << i << "  " << j << "|3|" << endl;
				for (int i = 0; i < n; i++){
					for (int j = 0; j < m; j++)
						ofile << a[i][j] << " ";
					ofile << endl;
				}
				ofile << endl;
			}
		}
	}
	

		for (int i = 0; i < n; i++){
			for (int j = 0; j < m; j++)
				ofile << a[i][j] << " ";
			ofile << endl;
		}
		ofile << endl;

	double suma = 0;
	for (int i = 0; i < n; i++){
		for (int j = 0; j < m; j++)
			suma += a[i][j];
	}

	ofile << suma;
	cout.flush();

	//cout << n << endl << m << endl;
	
	//outf << atoi(a) + atoi(b);
	//cout.flush();
	//intr.close();
	//outf.close();
	//cout << endl;
	system("pause");
}