Cod sursa(job #432520)

Utilizator crushackPopescu Silviu crushack Data 2 aprilie 2010 14:43:28
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#define lung 20

int a[lung][lung];
int max,n,m;
void bkt(int,int);


int main()
{
	int su,i,j;
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%d%d",&n,&m);
	su=0;
	for (i=0;i<n;i++)
		for (j=0;j<m;j++)
		{
			scanf("%d",&a[i][j]);
			su+=a[i][j];
		}
	max=su;
	bkt(0,su);
	printf("%d\n",max);
	fclose(stdout);
	return 0;
}

void bkt(int x,int su)
{
	if (su>max) max=su;
	int k;
	if (x>=n)
	{
		int ax=x-n;
		for (k=0;k<n;k++)
			su-=2*a[k][ax];
		if (su>max) max=su;
		if (x+1<n+m) bkt(x+1,su);
		for (k=0;k<n;k++)
			su+=2*a[k][ax];
		if (su>max) max=su;
		if (x+1<n+m) bkt(x+1,su);
	}
	else
	{
		for (k=0;k<n;k++)
			su-=2*a[x][k];
		if(su>max) max=su;
		if (x+1<n+m) bkt(x+1,su);
		for (k=0;k<n;k++)
			su+=2*a[x][k];
		if (su>max) max=su;
		if (x+1<n+m) bkt(x+1,su);
	}
}