Pagini recente » Cod sursa (job #839089) | Cod sursa (job #2293475) | Cod sursa (job #3178507) | Cod sursa (job #2286434) | Cod sursa (job #1207022)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int st[33],a[17][17],n,m,maxim;
void citire()
{
f>>n>>m;
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
f>>a[i][j];
a[0][j]+=a[i][j];
a[i][0]+=a[i][j];
maxim+=a[i][j];
}
}
int suma(int k)
{
int i,s=0,j;
for(i=1;i<=k;i++)
{
if(st[i]<=n)
for(j=1;j<=m;j++)
a[st[i]][j]*=(-1);
else
for(j=1;j<=n;j++)
a[j][st[i]-n]*=(-1);
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
s+=a[i][j];
for(i=1;i<=k;i++)
{
if(st[i]<=n)
for(j=1;j<=m;j++)
a[st[i]][j]*=(-1);
else
for(j=1;j<=n;j++)
a[j][st[i]-n]*=(-1);
}
return s;
}
void bkt(int k)
{
int i,s;
for(i=st[k-1]+1;i<=n+m;i++)
{
st[k]=i;
s=suma(k);
if(s>maxim)
maxim=s;
bkt(k+1);
}
}
int main()
{
citire();
bkt(1);
g<<maxim;
return 0;
}