Pagini recente » Cod sursa (job #810313) | Cod sursa (job #2767626) | Cod sursa (job #1604351) | Cod sursa (job #2213926) | Cod sursa (job #2637787)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n,m,a[20][20],st1[20],st2[20],sl[20],sc[20],S=0,suma_initiala=0;
void afis(int k,int s1,int s2)
{
int s3=0;
for(int i=1; i<=n; i++)
if(st1[i]<0)
for(int j=1; j<=m; j++)
if(st2[j]<0)
s3+=a[i][j];
if(suma_initiala+2*s1+2*s2+4*s3>S)
S=suma_initiala+2*s1+2*s2+4*s3;
}
void bk2(int p,int s1, int s2)
{
for(int i=-1; i<=1; i+=2)
{
st2[p]=i;
if(p==m)
{
if(st2[p]<0)
afis(p,s1,s2+st2[p]*sc[p]);
else
afis(p,s1,s2);
}
else
{
if(st2[p]<0)
bk2(p+1,s1,s2+st2[p]*sc[p]);
else
bk2(p+1,s1,s2);
}
}
}
void bk1(int k,int s1)
{
for(int i=-1; i<=1; i+=2)
{
st1[k]=i;
if(k==n)
{
if(st1[k]<0)
bk2(1,s1+st1[k]*sl[k],0);
else
bk2(1,s1,0);
}
else
{
if(st1[k]<0)
bk1(k+1,s1+st1[k]*sl[k]);
else
bk1(k+1,s1);
}
}
}
int main()
{
fin>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
fin>>a[i][j];
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
{
suma_initiala+=a[i][j];
sl[i]+=a[i][j];
sc[j]+=a[i][j];
}
st1[0]=0;
st2[0]=0;
bk1(1,0);
fout<<S;
return 0;
}