Cod sursa(job #1994710)

Utilizator l-teenLucian l-teen Data 25 iunie 2017 18:35:12
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.32 kb
// Flip_InfoArena.cpp : Defines the entry point for the console application.
//

#include "stdio.h"


int main(int argc, char* argv[])
{
	FILE *in, *out;
	int n, m, v[16][16], i, j, l,sl, sc;
	long long sum = 0;
	in = fopen("flip.in", "r");
	
	//----read
	if (!in)
		return 0;

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

	for (i=0;i<n;++i)
		for (j=0;j<m;++j)
		{
			fscanf(in, "%d", &v[i][j]);
			sum += v[i][j];
		}
	
	//----process
	for (i = 0; i<n;++i)
	{
		for (j=0;j<m;++j)
		{
				sl = 0; sc = 0;
				for (l = 0;l <n; ++l)
					sc += v[l][j];
				for (l = 0;l < m;++l)
					sl += v[i][l];
				sl -= v[i][j];
				sc -= v[i][j];
				
				if (sum - (2*sl) - (2*sc) > sum)
				{
					for (l = 0;l <n; ++l)
						v[l][j] = -v[l][j];
					for (l = 0;l < m;++l)
						v[i][l] = -v[i][l];
					sum = sum - (2*sl) - (2*sc);
				}
				else
				{
					if (sum - (2*sl) - (2*v[i][j]) > sum)
					{
						for (l = 0;l < m;++l)
							v[i][l] = -v[i][l];
						sum = sum - (2*sl) - (2*v[i][j]);
					}
					else
					{
						if (sum - (2*sc) - (2*v[i][j]) > sum)
						{
							for (l = 0;l < n;++l)
								v[l][j] = -v[l][j];
							sum = sum - (2*sc) - (2*v[i][j]);
						}
					}
				}

		}
	}

	out = fopen("flip.out", "w");
	fprintf(out, "%lld", sum);
	fclose(out);
	fclose(in);
	return 0;
}