Pagini recente » Cod sursa (job #2718642) | Cod sursa (job #3041962) | Cod sursa (job #1214264) | Cod sursa (job #1674102) | Cod sursa (job #1193085)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f;
ofstream g;
int i,j,n,m,t[20][20],a[20];
long long sss;
void suma()
{
for(i=1;i<=n;i++){t[i][m+1]=0;
for(j=1;j<=m;j++)t[i][m+1]+=t[i][j];}
for(i=1;i<=n;i++){t[n+1][i]=0;
for(j=1;j<=m;j++)t[n+1][i]+=t[j][i];}
}
int sumat()
{
int qw=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)qw+=t[i][j];
return qw;
}
void linie(int mn)
{
for(int i=1;i<=m;i++)t[mn][i]*=-1;
}
void coloana(int mn)
{
for(int i=1;i<=n;i++)t[i][mn]*=-1;
}
void afis(int k,int t[20][20])
{
for(int i=1;i<=k;i++)linie(a[i]);
suma();
for(int i=1;i<=n;i++)if(t[n+1][i]<0)coloana(i);
int zxc;
zxc=sumat();
if(zxc>sss)sss=zxc;
}
void back(int k)
{
if(k<=n){
afis(k,t);
for(int i=a[k];i<=n;i++)
{
int ok=1;
int j=1;
while(j<=k&&ok){if(i==a[j])ok=0;j++;}
if(ok){
a[k+1]=i;
back(k+1);
}
}
}}
long long k;
int main()
{
f.open("flip.in");
g.open("flip.out");
f>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)f>>t[i][j];
sss=sumat();
a[0]=1;
back(0);
g<<sss;
g.close();
}