Cod sursa(job #2706048)

Utilizator snkwtf112Razvan Boicu snkwtf112 Data 13 februarie 2021 18:07:27
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.87 kb
#include <iostream>
#include <fstream>

using namespace std;

void read(int a[][20], int& n, int& m);
void afisare(int a[][20], int n, int m);
void flip(int a[][20], int n, int m);
int sum_max(int a[][20], int n, int m);

int main()
{
	int a[20][20], n, m;
	read(a, n, m);
	flip(a, n, m);
	//afisare(a, n, m);
	//cout << "\n";
	fstream g("flip.out", ios::out);
	g << sum_max(a, n, m);
	return 0;
}

void flip(int a[][20], int n, int m)
{
	int sum = 0, sumpoz = 0, sumneg = 0, maxneg = 0, maxpoz=0;
	int ind_col, ind_lin;
	for (int j = 0; j < m; j++)
	{
		sumpoz = 0, sumneg = 0;
		for (int i = 0; i < n; i++)
		{
			if (a[i][j] > 0)
				sumpoz = sumpoz + a[i][j];
			else
				sumneg = sumneg + a[i][j];
		}
		if (abs(sumneg) > sumpoz)
			if (abs(sumneg) > maxneg)
				ind_col = j;
			else
				if(abs(sumneg)==maxneg)
					if(sumpoz > maxpoz)
						ind_col = j, maxpoz=sumpoz;

	}
	for (int i = 0; i < n; i++)
	{
		sumpoz = 0, sumneg = 0;
		for (int j = 0; j < m; j++)
		{
			if (a[i][j] > 0)
				sumpoz = sumpoz + a[i][j];
			else
				sumneg = sumneg + a[i][j];
		}
		if (abs(sumneg) > sumpoz)
			if (abs(sumneg) > maxneg)
				ind_lin = i;
			else
				if (abs(sumneg) == maxneg)
					if (sumpoz > maxpoz)
						ind_col = i, maxpoz = sumpoz;
	}
	for (int i = 0; i < n; i++)
		a[i][ind_col] *= -1;
	for (int j = 0; j < m; j++)
		a[ind_lin][j] *= -1;
}

int sum_max(int a[][20], int n, int m)
{
	int sum = 0;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			sum += a[i][j];
	return sum;
}


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

void read(int a[][20], int& n, int& m)
{
	fstream f("flip.in", ios::in);
	f >> n >> m;
	for (int i = 0; i < n; i++)
		for (int j = 0; j < m; j++)
			f >> a[i][j];
}