Pagini recente » Cod sursa (job #416437) | Cod sursa (job #1185355) | Cod sursa (job #962894) | Cod sursa (job #917680) | Cod sursa (job #305148)
Cod sursa(job #305148)
#include<stdio.h>
long a[17][17],l[17],c[17],i,j,n,m,minus,dx,dy;
long long sum;
void linie(int k)
{long ii;
for(ii=1; ii<=m; ii++){a[k][ii]*=-1;c[ii]+=2*a[k][ii];} l[k]*=-1;
sum+=2*l[k];
}
void coloana(int k)
{long ii;
for(ii=1; ii<=n; ii++){a[ii][k]*=-1;l[ii]+=2*a[ii][k];} c[k]*=-1;
sum+=2*c[k];
}
int main(void){
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%ld %ld",&n,&m);
for(i=1; i<n+1; i++)for(j=1; j<m+1; j++)
{ scanf("%ld ",&a[i][j]); l[i]+=a[i][j]; c[j]+=a[i][j]; sum+=a[i][j]; }
for(i=1; i<=n; i++)if(l[i]<=0)minus++;
for(i=1; i<=m; i++)if(c[i]<=0)minus++;
while(minus)
{
minus=0;
dx=dy=0;
for(i=1; i<=n; i++) {for(j=1; j<=m; j++)if(a[i][j]!=0){dx++; break; }if(l[i]<0 || dx)linie(i); }
for(i=1; i<=m; i++) {for(j=1; j<=n; j++) if(a[j][i]!=0){dy++; break; } if(c[i]<0 || dy)coloana(i); }
for(i=1; i<=n; i++)if(l[i]<0 || dx) minus++;
for(i=1; i<=m; i++)if(c[i]<0 || dy)minus++;
}
printf("%lld",sum);
return 0;
}