Cod sursa(job #2453366)

Utilizator cristi1990anCornea Cristian cristi1990an Data 3 septembrie 2019 15:58:06
Problema Jocul Flip Scor 10
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

unsigned int sum(int v[100][100], int n, int m)
{
	int s = 0, i, j;
	for (i = 0; i <= n - 1; i++)
		for (j = 0; j <= m - 1; j++)
			s = s + v[i][j];
	return s;
}

void switch_line(int v[100][100], int line, int m)
{
	for (int i = 0; i <= m - 1; i++)
		v[line][i] = -v[line][i];
}

void switch_column(int v[100][100], int column, int n)
{
	for (int i = 0; i <= n - 1; i++)
		v[i][column] = -v[i][column];
}


int main()
{
	FILE* f = fopen("flip.in", "rt");
	int v[100][100], n, m, s, max_sum;

	fscanf(f, "%d", &n);
	fscanf(f, "%d", &m);

	for (int i = 0; i <= n - 1; i++)
		for (int j = 0; j <= m - 1; j++)
			fscanf(f, "%d", &v[i][j]);

	max_sum = sum(v, n, m);

	for (int i = 0; i <= n - 1; i++)
	{

		switch_line(v, i, m);
		for (int j = 0; j <= m - 1; j++)
		{
			switch_column(v, j, n);
			s = sum(v, n, m);

			if (max_sum < s)
				max_sum = s;
			switch_column(v, j, n);
		}
		switch_line(v, i, m);
		for (int j = 0; j <= m - 1; j++)
		{
			switch_column(v, j, n);
			s = sum(v, n, m);

			if (max_sum < s)
				max_sum = s;
			switch_column(v, j, n);
		}
	}

	f = fopen("flip.out", "wt");

	fprintf(f, "%d \n", max_sum);
	fflush(stdout);

	fclose(f);

	return 0;
}