Cod sursa(job #316116)

Utilizator freak93Adrian Budau freak93 Data 18 mai 2009 15:37:01
Problema Jocul Flip Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<cstdio>
#define maxn 16

using namespace std;

int a[maxn][maxn],x[maxn],i,j,n,m,k;

long long smax;

void ver()
{
	int i,j,s=0,r;
	for(i=1;i<=n;++i)
	{
		r=0;
		for(j=1;j<=m;++j)
			if(x[j]==2) 
				r-=a[i][j];
			else
				r+=a[i][j];
		
		if(r>0) s+=r;
		else s-=r;
	}
	
	if(s>smax) smax=s;
}

void verr()
{
	int i,j,s=0,r;
	for(i=1;i<=m;++i)
	{
		r=0;
		for(j=1;j<=n;++j)
			if(x[j]==2) 
				r-=a[j][i];
			else
				r+=a[j][i];
		
		if(r>0) s+=r;
		else s-=r;
	}
	
	if(s>smax) smax=s;
}

int main()
{
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	
	scanf("%d %d",&n,&m);
	
	for(i=1;i<=n;++i)
		for(j=1;j<=m;++j)
			scanf("%d",&a[i][j]);
	
	k=1;
	while(k)
		if(k>m)
			ver(),--k;
		else
		{
			++x[k];
			if(x[k]>2) 
				x[k--]=0;
			else 
				++k;
		}
	
	while(k)
		if(k>n)
			verr(),--k;
		else
		{
			++x[k];
			if(x[k]>2) 
				x[k--]=0;
			else
				++k;
		}
	
	printf("%lld\n",smax);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}