Pagini recente » Cod sursa (job #2400469) | Cod sursa (job #2144774) | Cod sursa (job #1698468) | Cod sursa (job #2144590) | Cod sursa (job #767675)
Cod sursa(job #767675)
#include<fstream>
using namespace std;
ifstream fcin("flip.in");
ofstream fcout("flip.out");
int n,m,a[17][17],s[17],ma,sum,sol=-10000,s2[17],as,as2;
void read()
{
fcin>>n>>m;
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
fcin>>a[i][j];
a[i][0]+=a[i][j];
sum+=a[i][j];
}
for(j=1;j<=m;j++)
for(i=1;i<=n;i++)
a[0][j]+=a[i][j];
}
void prel2(int k)
{
as2=as;
for(int i=1;i<=k;i++)
as2=as2-2*a[0][s2[i]];
if(as2>sol)
sol=as2;
}
void back_m(int k)
{
if(k>m)
return;
for(int i=s2[k-1]+1;i<=m;i++)
{
s2[k]=i;
prel2(k);
back_m(k+1);
}
}
void prel(int k)
{
as=sum;
for(int i=1;i<=k;i++)
as=as-2*a[s[i]][0];
back_m(1);
}
void back_n(int k)
{
if(k>n)
return;
for(int i=s[k-1]+1;i<=n;i++)
{
s[k]=i;
prel(k);
back_n(k+1);
}
}
int main()
{
read();
back_n(1);
fcout<<sol;
}