Pagini recente » Cod sursa (job #1763517) | Cod sursa (job #1661192) | Cod sursa (job #2103524) | Cod sursa (job #186964) | Cod sursa (job #206057)
Cod sursa(job #206057)
#include <stdio.h>
long a[20][20],b[20][20];
long long max;
int i,j,n,m;
int sol[20],use[20];
FILE *fin,*fout;
void vezi()
{
int i,j;
long long sum,tot=0;
for(i=1;i<=n;i++);
for(j=1;j<=m;j++) a[i][j]=b[i][j];
for(i=1;i<=n;i++)
if(use[i])
for(j=1;j<=m;j++) a[i][j]=-a[i][j];
for(j=1;j<=m;j++)
{
sum=0;
for(i=1;i<=n;i++) sum +=a[i][j];
if(sum>-sum) tot += sum; else tot += -sum;
}
if(tot>max) max=tot;
}
void back(int k)
{
int i;
for(i=sol[k-1]+1;i<=n;i++)
{
sol[k]=i;
use[i]=1;
vezi();
back(k+1);
use[i]=0;
}
}
int main()
{
max=-2000000000;
fin=fopen("flip.in","r");
fout=fopen("flip.out","w");
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{fscanf(fin,"%ld",&a[i][j]);
b[i][j]=a[i][j];}
back(1);
fprintf(fout,"%lld",max);
fclose(fin); fclose(fout);
return 0;
}