Pagini recente » Cod sursa (job #1358855) | Cod sursa (job #807539) | Cod sursa (job #1995267) | Cod sursa (job #22756)
Cod sursa(job #22756)
#include<stdio.h>
int n,m;
long a[17][17];
int main()
{
long s1=0,s2=0,sl[17]={0},sc[17]={0},var=0;
int i,j,minus=-1,k;
FILE *f=fopen("flip.in","r"),*g=fopen("flip.out","w");
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
fscanf(f,"%ld",&a[i][j]);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
sl[i]+=a[i][j];
s1+=sl[i];
}
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
sc[i]+=a[j][i];
for(i=1;i<=n;i++)
if(sl[i]==0)
{
for(j=1;j<=m;j++)
if(a[i][j]<0)
s2+=sc[j]+2*a[i][j]*minus;
else
if(a[i][j]>0)
{
var=a[i][j]*minus*2;
if(var+sc[j]<0)
s2+=minus*(var+sc[j]);
var=0;
}
if(s2>s1)
for(j=1;j<=m;j++)
{
a[i][j]=a[i][j]*minus;
if(a[i][j]<0)
for(k=1;k<=n;k++)
a[j][k]=a[j][k]*minus;
}
s1=s2;
s2=0;
}
for(i=1;i<=m;i++)
if(sc[i]==0)
{
for(j=1;j<=n;j++)
if(a[j][i]<0)
s2+=sl[j]+2*a[j][i]*minus;
else
if(a[j][i]>0)
{
var=a[j][i]*minus*2;
if(var+sl[j]<0)
s2+=minus*(var+sl[j]);
var=0;
}
if(s2>s1)
for(j=1;j<=n;j++)
{
a[j][i]=a[j][i]*minus;
if(a[j][i]<0)
for(k=1;k<=m;k++)
a[k][j]=a[k][j]*minus;
}
s1=s2;
s2=0;
}
fprintf(g,"%ld",s1);
fclose(f);
fclose(g);
return 0;
}