Cod sursa(job #1564200)

Utilizator kmbogdMINZU Bogdan kmbogd Data 9 ianuarie 2016 04:34:59
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<iostream>
#include<fstream>
using namespace std;

fstream f("flip.in", ios::in);
fstream g("flip.out", ios::out);
int n, m, a[17][17], l[17], c[17];

int main()
{
	int i, j, k, min;
	f >> n;
	f >> m;
	for (i = 1; i <= n; i++)
		for (j = 1; j <= m; j++)
		{
			f >> a[i][j];
			l[i] += a[i][j];
			c[j] += a[i][j];
		}
	do {
		min = 0;
		k = 0;
		for (i = 1; i <= n; i++)
			if (l[i] < min) {
				min = l[i];
				k = i;
			}

		for (j = 1; j <= m; j++)
			if (c[j] < min) {
				min = c[j];
				k = 0-j;
			}

		if (min < 0)
			if (k>0) {
				l[k] = 0 - l[k];
				for (j = 1; j <= m; j++) {
					c[j] = c[j] - a[k][j] - a[k][j];
					a[k][j] = 0 - a[k][j];
				}
			}
			else if (k < 0) {
				k = 0 - k;
				c[k] = 0 - c[k];
				for (i = 1; i <= n; i++) {
					l[i] = l[i] - a[i][k] - a[i][k];
					a[i][k] = 0 - a[i][k];
				}
			}
	} while (min < 0);
	
	min = 0;
	for (i = 1; i <= n; i++)
		min += l[i];
	g << min;
	f.close();
	g.close();
	return 0;
}