Pagini recente » Cod sursa (job #1713797) | Cod sursa (job #2138526) | Cod sursa (job #538709) | Cod sursa (job #1082916) | Cod sursa (job #799892)
Cod sursa(job #799892)
#include<fstream>
using namespace std;
int max(int a,int b){return a<b ? b:a;}
ifstream in("flip.in");
ofstream out("flip.out");
int mat[20][20],n,m,smax=-1000000,sol[20];
void bkt(int);
void schimb(int);
void sumamax(int);
void actualizaresuma();
int main()
{
int i,j,s=0;
in>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
in>>mat[i][j];
s+=mat[i][j];
}
for(i=1;i<=n;i++)
{
bkt(1);
if(smax>s)
s=smax;
schimb(i);
bkt(1);
if(smax>s)
s=smax;
schimb(i);
}
if(s>smax)
out<<s;
else out<<smax;
return 0;
}
void schimb (int i)
{
for(int j=1;j<=m;j++)
{
mat[i][j]*=-1;
}
}
void bkt(int p)
{
if(p-1==m)
{
actualizaresuma();
return;
}
sumamax(p);
bkt(p+1);
}
void sumamax(int p)
{
int i,s=0,k=0;
for(i=1;i<=n;i++)
s+=mat[i][p];
for(i=1;i<=n;i++)
{
int a=mat[i][p]*(-1);
k+=a;
}
sol[p]=max(s,k);
}
void actualizaresuma()
{
int i,s=0;
for(i=1;i<=m;i++)
s+=sol[i];
smax=s;
}