Pagini recente » Cod sursa (job #1106937) | Istoria paginii runda/lh.11-1/clasament | Cod sursa (job #2683857) | Cod sursa (job #2557145) | Cod sursa (job #1176443)
#include <iostream>
#include <cstdio>
using namespace std;
long int suma,smax,n=5,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;
//scanf("%ld %ld",&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);
//printf("%ld",smax);
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]);
}