Pagini recente » Cod sursa (job #586804) | Cod sursa (job #2358651) | Cod sursa (job #996681) | Cod sursa (job #1499190) | Cod sursa (job #1159926)
#include <cstdio>
using namespace std;
int n,m,i,j,ok,k,v[16][16],minim=1000000,poz,pozitie,c[16][2],l[16][2],suma;
void functie()
{
if(ok==1)
{
for(i=0;i<m;i++)
{
l[poz][0]-=v[poz][i];
l[poz][1]-=v[poz][i];
c[i][0]-=v[poz][i];
c[i][1]-=v[poz][i];
v[poz][i]=-v[poz][i];
if(c[i][0]+c[i][1]<minim)
{
minim=c[i][0];
pozitie=i;
ok=0;
}
}
}
else
{
for(i=0;i<n;i++)
{
l[i][0]-=v[i][poz];
l[i][1]-=v[i][poz];
c[poz][0]-=v[i][poz];
c[poz][1]-=v[i][poz];
v[i][poz]=-v[i][poz];
if(l[i][0]+l[i][1]<minim)
{
minim=l[i][0];
pozitie=i;
ok=1;
}
}
for(j=0;j<m;j++)
{
if(c[j][0]+c[j][1]<minim)
{
minim=c[j][0];
pozitie=j;
ok=0;
}
}
}
if(ok==0)
{
if(suma-minim*2-c[pozitie][1]*2>suma)
{
suma=suma-minim*2-c[pozitie][1]*2;
minim=1000000;
poz=pozitie;
functie();
}
else printf("%d",suma);
}
else
{
if(suma-minim*2-l[pozitie][1]*2>suma)
{
suma=suma-minim*2-l[pozitie][1]*2;
poz=pozitie;
functie();
}
else printf("%d",suma);
}
}
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&k);
suma+=k;
v[i][j]=k;
if(k<0)
{
l[i][0]+=k;
c[j][0]+=k;
}
else
{
l[i][1]+=k;
c[j][1]+=k;
}
}
if(l[i][0]+l[i][1]<minim)
{
minim=l[i][0];
poz=i;
ok=1;
}
}
for(j=0;j<m;j++)
{
if(c[j][0]+c[j][1]<minim)
{
minim=c[j][0];
poz=j;
ok=0;
}
}
if(ok==0)
{
if(suma-minim*2-c[poz][1]*2>suma)
{
suma=suma-minim*2-c[poz][1]*2;
minim=1000000;
functie();
}
else printf("%d",suma);
}
else
{
if(suma-minim*2-l[poz][1]*2>suma)
{
suma=suma-minim*2-c[poz][1]*2;
minim=1000000;
functie();
}
else printf("%d",suma);
}
}