Pagini recente » Cod sursa (job #2023713) | Cod sursa (job #1845639) | Cod sursa (job #3216868) | Cod sursa (job #738009) | Cod sursa (job #1176444)
#include <iostream>
#include <cstdio>
using namespace std;
long int smax=0,n,m,v[17][17],col[17];
int tije[17];
void afisare();
void generare(int k);
void baga_tije(int k);
void scoate_tije(int k);
int main()
{
freopen("flip.in","r",stdin);
freopen("flip.out", "w", stdout);
//citim matricea
cin>>n>>m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)cin>>v[i][j],col[j]+=v[i][j];
generare(1);
cout<<smax;
return 0;
}
void afisare()
{
for(int j=1; j<=m; j++)if(tije[j])baga_tije(j);
//calculam maximul
long int spart=0;
for(int jj=1; jj<=m; jj++){if(col[jj] >= 0)spart+=col[jj]; else {spart-=col[jj];}}
if(spart > smax)smax=spart;
//scoatem tije
for(int j=1; j<=m; j++)if(tije[j])scoate_tije(j);
}
void generare(int k){
if(k<=16){
for(int i=0; i<2; i++){tije[k]=i; generare(k+1);}
}
if(k==17) afisare();
}
void baga_tije(int k){
for(int ii=1; ii<=m; ii++) col[ii]-=(2*v[k][ii]);
}
void scoate_tije(int k){
for(int ii=1; ii<=m; ii++) col[ii]+=(2*v[k][ii]);
}