Cod sursa(job #525666)

Utilizator eudummyEduard eudummy Data 25 ianuarie 2011 19:42:00
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
using namespace std;
bool x1[20],x2[20];//x1=col, x2=linii
long max(long a[], long x, long &z, bool xx[])
{
	long m1=a[0];
	for (long i=1;i<x;i++)
		if (m1<a[i] && xx[i])
		{
			z=i;
			m1=a[i];
		}
	return m1;
}
int main()
{
	long int n,m,i,j,s=0,a[20][20],l[20],c[20],m1,m2,z1,z2;
	ifstream f("flip.in");
	ofstream g("flip.out");
	f>>n>>m;
	for (i=0;i<=n+1 || i<=m+1;i++)
	{
		l[i]=c[i]=0;
		x1[i]=x2[i]=1;
	}
	for (i=0;i<n;i++)
		for (j=0;j<m;j++)
		{
			f>>a[i][j];
			c[j]=c[j]-a[i][j];
			l[i]=l[i]-a[i][j];
		}
	int k=1;
	while (k)
	{
		k=0;
		m1=max(c,m,z1,x1);
		m2=max(l,n,z2,x2);
		if (m1>m2)
		{
			if (m1>=0)
			{
				x1[z1]=0;
				for (i=0;i<n;i++)
				{
					a[i][z1]=-a[i][z1];
					l[i]=l[i]-2*a[i][z1];
				}
				c[z1]=-c[z1];
				k=1;
			}
		}
		else
			if (m2>=0)
			{
				for (j=0;j<m;j++)
				{
					x2[z2]=0;
					a[z2][j]=-a[z2][j];
					c[j]=c[j]-2*a[z2][j];
				}
				l[z2]=-l[z2];
				k=1;
			}
	}
	for (i=0;i<n;i++)
		s-=l[i];
	g<<s;
}