Pagini recente » Cod sursa (job #2279572) | Cod sursa (job #2139461) | Cod sursa (job #1567934) | Cod sursa (job #1675699) | Cod sursa (job #62454)
Cod sursa(job #62454)
#include<stdio.h>
#include<math.h>
#include<string.h>
FILE*f=fopen("flip.in","r");
FILE*g=fopen("flip.out","w");
long st[17],n,a[17][17],m,p,b[17][17],solmax,sum,sc[17];
void read()
{
int i,j;
fscanf(f,"%ld %ld",&n,&m);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{
fscanf(f,"%ld",&a[i][j]);
solmax+=a[i][j];
sc[j]+=a[i][j];
}
sum=solmax;
}
void repr_binara(long x)
{
p=0;
while(x!=0)
{
st[++p]=x%2;
x/=2;
}
}
void flip()
{
int i,s=0,j,smax=0,slocala;
slocala=sum;
for(i=1;i<=p;++i)
if(st[i]==1)
{
s=0;
slocala=slocala-2*sc[i];
}
smax=slocala;
if(solmax<smax) solmax=smax;
smax=0;
for(i=1;i<=n;++i)
{
s=0;
for(j=1;j<=m;++j)
if(st[j]==1) s-=a[i][j];
else s+=a[i][j];
if(s<0) smax-=s;
else smax+=s;
}
if(solmax<smax) solmax=smax;
}
int main()
{
read();
int i;
for(i=1;i<=pow(2,m)-1;++i)
{
repr_binara(i);
flip();
}
fprintf(g,"%ld",solmax);
return 0;
}