Pagini recente » Cod sursa (job #2505563) | Cod sursa (job #3134527) | Cod sursa (job #909) | Cod sursa (job #33362) | Cod sursa (job #1987102)
#include <fstream>
#define MAX 20
using namespace std;
ifstream fi("flip.in");
ofstream fo("flip.out");
int n,m,a[MAX][MAX],p[2*MAX],sum_max,a2[MAX][MAX];
int sum()
{
int rez=0;
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
rez+=a2[i][j];
return rez;
}
void bkt(int poz)
{
if (poz>1)
{
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
a2[i][j]=a[i][j];
for (int i=1; i<poz; i++)
{
if (p[i]<=n)
{
///modificam linia p[i]
for (int j=1; j<=m; j++)
a2[p[i]][j]*=-1;
int sum_curent=sum();
sum_max=max(sum_max,sum_curent);
}
else
{
///modificam coloana p[i]-n
for (int j=1; j<=n; j++)
a2[j][p[i]-n]*=-1;
int sum_curent=sum();
sum_max=max(sum_max,sum_curent);
}
}
}
for (int i=p[poz-1]+1; i<=m+n; i++)
{
p[poz]=i;
bkt(poz+1);
}
}
int main()
{
fi>>n>>m;
for (int i=1; i<=n; i++)
for (int j=1; j<=m; j++)
fi>>a[i][j];
bkt(1);
fo<<sum_max;
fi.close();
fo.close();
return 0;
}