Pagini recente » Cod sursa (job #1349915) | Cod sursa (job #300028) | Cod sursa (job #2255214) | Cod sursa (job #897872) | Cod sursa (job #265466)
Cod sursa(job #265466)
#include<stdio.h>
long mat[16][16];
long huge max=0;
int sol[256];
int n,m,k=1;
void citire()
{
freopen("flip.in","r",stdin);
scanf("%d",&n);
scanf("%d",&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
scanf("%ld",&mat[i][j]);
}
void do_max()
{
long mat2[16][16];
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
mat2[i][j]=mat[i][j];
long huge max2=0;
for(i=1;i<=n;i++)
if(sol[i])
for(j=1;j<=m;j++)
mat2[i][j]*=-1;
for(j=1;j<=m;j++)
if(sol[n+j])
for(i=1;i<=n;i++)
mat2[i][j]*=-1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
max2+=mat2[i][j];
if(max2>max)max=max2;
}
int add2sol()
{
int poz=1;
while(sol[poz]!=0)
sol[poz++]=0;
sol[poz]=1;
return poz<n+m;
} /*
int gen(long N, long M)
{
freopen("flip.in", "w", stdout);
long i,j;
int x;
printf("%ld %ld\n",N,M);
for (i=1;i<=N;i++)
{
for(j=1;j<=M;j++)
{x=rand()%2; if(!x)x=-1;printf("%ld ", (rand() % 1000000)*x);}
printf("\n");
}
printf("\n");
fclose(stdout);
return 0;
} */
int main()
{
//gen(16,16);return 0;
freopen("flip.out","w",stdout);
citire();
while(add2sol())do_max();
printf("%lld",max);
return 0;
}