Cod sursa(job #2239056)

Utilizator AdiMunteanAdrian Muntean AdiMuntean Data 8 septembrie 2018 19:43:54
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream f("flip.in");
ofstream g("flip.out");

//----------------------------------------------------

void citire(int a[][17], int &n, int &m)
{
	f >> n >> m;
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			f >> a[i][j];
}

void afisare(int a[][17], int n, int m)
{
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=m; j++)
			cout << a[i][j] << " ";
		cout << endl;
	}
}

//----------------------------------------------------

int aBest[166][17];

//

void mpLine(int a[][17], int i, int m)
{
	for(int j=1; j<=m; j++)
		a[i][j] *= -1;
}

void mpColumn(int a[][17], int j, int n)
{
	for(int i=1; i<=n; i++)
		a[i][j] *= -1;
}

int sumMatrix(int a[][17], int n, int m)
{
	int s=0;
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			s += a[i][j];
	return s;
}

void dupMatrix(int a[][17], int n, int m)
{
	for(int i=1; i<=n; i++)
		for(int j=1; j<=m; j++)
			aBest[i][j] = a[i][j];
}

//

void bestResult(int a[][17], int n, int m, int &sumaBest)
{
	for(int i=1; i<=n; i++)
	{
		mpLine(a,i,m);
		
		for(int j=1; j<=m; j++)
		{
			mpColumn(a,j,n);
			if(sumMatrix(a,n,m) > sumaBest)
			{
				sumaBest = sumMatrix(a,n,m);
				dupMatrix(a,n,m);
			}
			mpColumn(a,j,n);
		}
		
		mpLine(a,i,m);
	}
}

//----------------------------------------------------

int main() {
	int a[166][17],n,m;
	int sumaBest;
	
	sumaBest = sumMatrix(a,n,m);
	dupMatrix(a,n,m);
	
	citire(a,n,m);
	bestResult(a,n,m,sumaBest);
	g << sumaBest;
	
	return 0;
}