Pagini recente » Cod sursa (job #2625781) | Cod sursa (job #2625395) | Cod sursa (job #2343693) | Cod sursa (job #701896) | Cod sursa (job #2061061)
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m,ma[20][20],l[20],c[20],sMax,sc[20];
void calcS(int l[], int c[])
{
int s=0,nr;
for(int i=1;i<=m;++i)sc[i]=0;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
{
nr=ma[i][j];
if(l[i]==1)nr*=-1;
sc[j]+=nr;
}
for(int i=1;i<=m;++i)if(sc[i]<0)c[i]=1;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
{
nr=ma[i][j];
if(l[i]==1)nr*=-1;
if(c[j]==1)nr*=-1;
s+=nr;
}
for(int i=1;i<=m;++i)c[i]=0;
if(s>sMax)sMax=s;
// for(int i=1;i<=n;++i)g<<l[i]<<" ";
// g<<'\n';
// for(int j=1;j<=m;++j)g<<c[j]<<" ";
}
void calcl(int lin,int l[], int c[])
{
l[lin]=1;
for(int i=lin;i<=n;++i)
{
calcS(l,c);
calcl(lin+1,l,c);
}
l[lin]=0;
// for(int i=1;i<=n;++i)g<<l[i]<<" ";
// g<<endl;
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)f>>ma[i][j],sc[j]+=ma[i][j];
for(int i=1;i<=n;++i)calcl(i,l,c);
g<<sMax;
return 0;
}