Cod sursa(job #556061)

Utilizator raul1520Raul Andrei raul1520 Data 15 martie 2011 21:49:30
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <cstdio>
using namespace std;
int n,m,a[17][17],sc[17],sc2[17],sl[17],sl2[17],i,j,s,p;
void Citeste()
{
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(i=1;i<=n;i++)
	{
		sl[i]=0;
		sc[i]=0;
		for(j=1;j<=m;j++)
		{
			scanf("%d",&a[i][j]);
			sl[i]=sl[i]+a[i][j];
			sc[j]=sc[j]+a[i][j];
		}
	}
}
void schimba(int i,int p)
{
	if(p==1)
	{
		for(j=1;j<=n;j++)
		{
			a[i][j]=a[i][j]*-1;
			sl2[i]=sl2[i]+a[i][j];
		}
		if(sl[i]<=sl2[i])
			sl[i]=sl2[i];
	}
	else if(p==2)
	{
		for(j=1;j<=n;j++)
		{
			a[j][i]=a[j][i]*-1;
			sc2[i]=sc2[i]+a[j][i];
		}
		if(sc[i]<=sc2[i])
		{
			sc[i]=sc2[i];
		}
	}
}
void Scrie()
{
	for(i=1;i<=n;i++)
		for(j=1;j<=m;j++)
			s=s+a[i][j];
	printf("%d",s);
}
int main()
{
	Citeste();
	for(i=1;i<=n;i++)
	{
		schimba(i,1);
		if(sl[i]>sl2[i])
			schimba(i,1);
	}
	for(i=1;i<=m;i++)
	{
		schimba(i,2);
		if(sc[i]>sc2[i])
			schimba(i,2);
	}
	Scrie();
	return 0;
}