Cod sursa(job #2453082)

Utilizator cristi1990anCornea Cristian cristi1990an Data 2 septembrie 2019 13:58:40
Problema Jocul Flip Scor 20
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.33 kb
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void check(int v[100][100], int N, int M, int *max)
{
	int aux[100][100], s = 0;
	for (int i = 0; i <= N - 1; i++)
		for (int j = 0; j <= M - 1; j++)
			aux[i][j] = v[i][j];

	for (int i = 0; i <= N - 1; i++)
		for (int j = 0; j <= M - 1; j++)
			s = s + aux[i][j];

	if (s > *max)
	{
		*max = s;
		printf("%d ", *max);
	}

	for (int i = 0; i <= N - 1; i++)
	{
		s = 0;
		for (int j = 0; j <= M - 1; j++)
			s = s + aux[i][j];
		if (s < 0)
		{
			for (int j = 0; j <= M - 1; j++)
				aux[i][j] = -aux[i][j];
			check(aux, N, M, max);
			for (int j = 0; j <= M - 1; j++)
				aux[i][j] = -aux[i][j];
		}
	}
	for (int j = 0; j <= M - 1; j++)
	{
		s = 0;
		for (int i = 0; i <= N - 1; i++)
			s = s + aux[i][j];
		if (s < 0)
		{
			for (int i = 0; i <= N - 1; i++)
				aux[i][j] = -aux[i][j];
			check(aux, N, M, max);
			for (int i = 0; i <= N - 1; i++)
				aux[i][j] = -aux[i][j];
		}
	}

}

int main()
{
	FILE* f = fopen("flip.in", "rt");
	int N, M, v[100][100], x, i, j, max=0;

	fscanf(f, "%d", &N);
	fscanf(f, "%d", &M);

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

	check(v, N, M, &max);

	f = fopen("flip.out", "wt");
	fprintf(f, "%d \n", max);
	fflush(stdout);
	fclose(f);


	return 0;
}