Cod sursa(job #317328)

Utilizator sseneca16vaida cosmin sseneca16 Data 23 mai 2009 10:16:50
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include<stdio.h>
long a[500][17],n,m,c[500],d[500];
long i,j,k,r,g,b,e,f;

int sum1(int j)
{int s=0;
for( k=1;k<=n;k++)
	  s+=a[k][j];
return s;
}


int sum2(int i)
{int s=0;
for( k=1;k<=m;k++)
	  s+=a[i][k];
return s;
}



int sum3()
{int s=0;
for( k=1;k<=n;k++)
	  s+=c[k];
return s;
}



int sum4()
{int s=0;
for( k=1;k<=m;k++)
	  s+=d[k];
return s;
}

void schimbare1(int j)
{for( k=1;k<=n;k++)
	  c[k]=a[k][j]*-1;
}


void schimbare2(int i)
{for( k=1;k<=m;k++)
	  d[k]=a[i][k]*-1;
}

void schimbare3(int j)
{for( k=1;k<=n;k++)
	  a[k][j]=c[k];
}


void schimbare4(int i)
{for( k=1;k<=m;k++)
	  a[i][k]=d[k];
}



int summax()
{int s=0;
for( i=1;i<=n;i++)
	for( k=1;k<=m;k++)
		s+=a[i][k];
return s;
}

void sumfin()
{
for(i=1;i<=n;i++)
	for( j=1;j<=m;j++)
		if(a[i][j])
		     {
		     g=sum1(j);
		      schimbare1(j);
		      b=sum3();
		      e=sum2(i);
		      schimbare2(i);
		      f=sum4();
		      if(b>g)
			schimbare3(j);

			if(f>e)
				schimbare4(i);

		      }

 }

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]);
sumfin();

sumfin();sumfin();sumfin();sumfin();sumfin();sumfin();sumfin();sumfin();sumfin();sumfin();sumfin();sumfin();
k=summax();
       if(k>r)
	r=k;
r=summax();
printf("%d",r);
return 0;
}