Pagini recente » Cod sursa (job #2696107) | Cod sursa (job #2288350) | Cod sursa (job #90646) | Cod sursa (job #1644559) | Cod sursa (job #2637782)
#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=0,s2=0,s3=0;
for(int i=1; i<=n; i++)
if(st1[i]<0)
s1+=st1[i]*sl[i];
for(int i=1; i<=m; i++)
if(st2[i]<0)
s2+=st2[i]*sc[i];
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)
{
for(int i=-1; i<=1; i+=2)
{
st2[p]=i;
if(p==m)
afis(p);
else
bk2(p+1);
}
}
void bk1(int k)
{
for(int i=-1; i<=1; i+=2)
{
st1[k]=i;
if(k==n)
bk2(1);
else
bk1(k+1);
}
}
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);
fout<<S;
return 0;
}