Cod sursa(job #1257676)

Utilizator sperila.alecsandru@yahoo.comSperila Alecsandru [email protected] Data 8 noiembrie 2014 03:58:33
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.87 kb
#include<iostream>
#include<fstream>
using namespace std;

void col(int matrix[16][16], int colSpace, int lineSpace, int &SC, int &colPos);
void line(int matrix[16][16], int rowSpece, int lineSpace, int &SL, int &linePos);
void comp(int colSpace, int lineSpace, int SC, int SL, int colPos, int linePos, int matrix[16][16]);
int sumMatrix(int matrix[16][16], int colSpace, int lineSpace);
void show(int matrix[16][16], int colSpace, int lineSpace);
void reading(int matrix[16][16], int &colSpace, int &lineSpace);



void reading(int matrix[16][16], int &colSpace, int &lineSpace)
{
	fstream input("flip.in");
	input >> lineSpace;
	input >> colSpace;
	for (int i = 0; i < lineSpace; i++)
	{
		for (int j = 0; j < colSpace; j++)
		{
			input >> matrix[i][j];
		}
	}

	input.close();


}

int sumMatrix(int matrixs[16][16], int colSpace, int lineSpace)
{
	int Sum = 0;
	for (int i = 0; i < lineSpace; i++)
	{
		for (int j = 0; j < colSpace; j++)
		{
			Sum += matrixs[i][j];
		}
	}
	return Sum;
}

void col(int matrix[16][16], int colSpace, int lineSpace, int &SC, int &colPos)
{
	int orgSum = 0, sumVect[16], i, j;

	for (i = 0; i < colSpace; i++)
	{
		for (j = 0; j < lineSpace; j++)
		{
			orgSum += matrix[j][i];
		}

		sumVect[i] = orgSum;
		orgSum = 0;
		//cout << sumVect[i]<<"/";
	}

	SC = sumVect[0];
	colPos = 0;
	for (i = 1; i < colSpace; i++)
	{
		if (SC > sumVect[i])
		{
			SC = sumVect[i];
			colPos = i;
		}
	}


}



void line(int matrix[16][16], int colSpace, int lineSpace, int &SL, int &linePos)
{
	int orgSum = 0, sumVect[16], i, j;

	for (i = 0; i < lineSpace; i++)
	{
		for (j = 0; j < colSpace; j++)
		{
			orgSum += matrix[i][j];
		}
		sumVect[i] = orgSum;
		orgSum = 0;
		//cout << sumVect[i]<<"/";
	}

	SL = sumVect[0];
	linePos = 0;
	for (i = 1; i < colSpace; i++)
	{
		if (SL > sumVect[i])
		{
			SL = sumVect[i];
			linePos = i;
		}
	}


}


void show(int matrix[16][16], int colSpace, int lineSpace)
{

	for (int i = 0; i < lineSpace; i++)
	{
		for (int j = 0; j < colSpace; j++)
		{
			cout << matrix[i][j] << " ";
		}
		cout << endl;
	}
}


void comp(int colSpace, int lineSpace, int SC, int SL, int colPos, int linePos, int matrix[16][16])
{
	if (SC < 0 && SL < 0)
	{
		if (SC < SL)
		{
			for (int i = 0; i < lineSpace; i++)
			{
				matrix[i][colPos] = -matrix[i][colPos];

			}
		}
		else
		{
			for (int i = 0; i < colSpace; i++)
			{
				matrix[linePos][i] = -matrix[linePos][i];

			}
		}
	}
	else
	if (SC < 0)
	{
		for (int i = 0; i < lineSpace; i++)
		{
			matrix[i][colPos] = -matrix[i][colPos];

		}
	}
	else
	if (SL < 0)
	{
		for (int i = 0; i < colSpace; i++)
		{
			matrix[linePos][i] = -matrix[linePos][i];

		}
	}

}

int main()
{
	int orgMatrix[16][16], cols=0, lines=0,colSum,cPos,lineSum,lPos,theSum=0;
	bool Ok = false;
	reading(orgMatrix, cols, lines);
	//show(orgMatrix, cols, lines);
	col(orgMatrix, cols, lines, colSum, cPos);
	line(orgMatrix, cols, lines, lineSum, lPos);
	//cout<<"Stuff" << colSum << " " << cPos << endl;
	//cout <<"NEXT"<< lineSum << " " << lPos << endl;
	theSum=sumMatrix(orgMatrix, cols, lines);
	comp(cols, lines, colSum, lineSum, cPos, lPos, orgMatrix);
	cout << sumMatrix(orgMatrix, cols, lines)<<endl;
	cout << endl;
	while (!Ok){
		if (theSum < sumMatrix(orgMatrix, cols, lines))
		{
			
			theSum = sumMatrix(orgMatrix, cols, lines);
			cout << endl;
			col(orgMatrix, cols, lines, colSum, cPos);
			line(orgMatrix, cols, lines, lineSum, lPos);
			//cout << "Stuff" << colSum << " " << cPos << endl;
			//cout << "NEXT" << lineSum << " " << lPos << endl;
			comp(cols, lines, colSum, lineSum, cPos, lPos, orgMatrix);
		}
		else
		{
			//show(orgMatrix, cols, lines);
			Ok = true;
		}
	}
	ofstream out("flip.out");
	out << sumMatrix(orgMatrix, cols, lines);
	out.close();
	return 0;

}