Pagini recente » Cod sursa (job #2248931) | Cod sursa (job #1317605) | Cod sursa (job #2695032) | Cod sursa (job #1116261) | Cod sursa (job #34990)
Cod sursa(job #34990)
#include<stdio.h>
int n,m,sw;
long a[17][17],t[17][17];
FILE *f=fopen("flip.in","r");
FILE *g=fopen("flip.out","w");
void cit()
{
fscanf(f,"%d%d",&n,&m);
for(register int i=1;i<=n;i++)
for(register int j=1;j<=m;j++)
{fscanf(f,"%ld",&a[i][j]);
t[i][j]=a[i][j];}
}
int adun(long x[][17])
{ long s=0;
for(register int i=1;i<=n;i++)
for(register int j=1;j<=m;j++)
s+=x[i][j];
return s;
}
void flip1()
{ long sp,sn;
for(register int i=1;i<=n;i++)
{sp=sn=0;
for(register int j=1;j<=m;j++)
if(a[i][j]>0)
sp+=a[i][j];
else sn+=a[i][j];
if(sp<-sn)
{sw=1;
for(register int j=1;j<=m;j++)
t[i][j]*=-1;
if(adun(a)<adun(t))
for(register int j=1;j<=m;j++)
a[i][j]*=-1;
}}
}
void flip2()
{ long sp,sn;
for(register int j=1;j<=m;j++)
{sp=sn=0;
for(register int i=1;i<=n;i++)
if(a[i][j]>0)
sp+=a[i][j];
else sn+=a[i][j];
if(sp<-sn)
{sw=1;
for(register int i=1;i<=n;i++)
t[i][j]*=-1;
if(adun(a)<adun(t))
for(register int i=1;i<=n;i++)
a[i][j]*=-1;
}}
}
int main()
{
cit();
sw=1;
while(sw)
{sw=0;
flip1();
flip2();
}
fprintf(g,"%ld",adun(a));
fcloseall();
return 0;
}