Cod sursa(job #2130833)

Utilizator vlavricVictor Lavric vlavric Data 13 februarie 2018 22:46:58
Problema Jocul Flip Scor 10
Compilator c Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <stdio.h>

typedef	struct structure
{
	int plus, minus;
}struc;

void	readfrom(int *n, int *m, int a[20][20])
{
	FILE *f; int i, j;

	f = fopen("flip.in", "r");
	fscanf(f, "%d %d", n, m);
	for (i = 0; i < *n; i++)
		for (j = 0; j < *m; j++)
			fscanf(f, "%d", &a[i][j]);
	fclose(f);
}

void	output(long long s)
{
	FILE *g;

	g = fopen("flip.out", "w");
	fprintf(g, "%lli", s);
	fclose(g);
}

void	black_magic(int n, int m, int a[20][20])
{
	int i, j; struc x[n], y[m];

	for (i = 0; i < n; i++)
	{
		x[i].plus = x[i].minus = 0;
		for (j = 0; j < m; j++)
		{
			x[i].plus += a[i][j];
			x[i].minus += (-1) * a[i][j];
		}
	}
	for (i = 0; i < m; i++)
	{
		y[i].plus = y[i].minus = 0;
		for (j = 0; j < n; j++)
		{
			y[i].plus += a[j][i];
			y[i].minus += (-1) * a[j][i];
		}
	}
	long long sum = 0;

	for (i = 0; i < n; i++)
	{
		if (x[i].minus > x[i].plus)
		{
			for (j = 0; j < m; j++)
				a[i][j] *= -1;
		}
	}
	for (i = 0; i < m; i++)
	{
		if (y[i].minus > y[i].plus)
		{
			for (j = 0; j < n; j++)
				a[j][i] *= -1;
		}
	}
	for (i = 0; i < n; i++)
		for (j = 0; j < m; j++)
			sum += a[i][j];
	output(sum);
}

int	main(void)
{
	int n, m, a[20][20];

	readfrom(&n, &m, a);
	black_magic(n, m, a);
	return (0);
}