Pagini recente » Cod sursa (job #2204240) | Cod sursa (job #2027773) | Cod sursa (job #2681120) | Cod sursa (job #2423592) | Cod sursa (job #1126555)
#include <fstream>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
#define N 17
int a[N][N], n, m, sol=-999999999, v[2*N+1];
void citire();
void backtrack(int k);
void refacere();
int main()
{
citire();
backtrack(1);
out << sol;
in.close();
out.close();
return 0;
}
void citire()
{
in >> n >> m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
in >> a[i][j];
}
void backtrack(int k)
{
if(k-1==n+m)
{
int f=0, s=0;
for(int i=1;i<=n;i++)
{
f++;
for(int j=1;j<=m;j++)
a[i][j]*=v[f];
}
for(int i=1;i<=m;i++)
{
f++;
for(int j=1;j<=n;j++)
a[j][i]*=v[f];
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
s+=a[i][j];
if(s>sol)
sol=s;
refacere();
return;
}
for(int i=-1;i<=1;i+=2)
{
v[k]=i;
backtrack(k+1);
}
}
void refacere()
{
int f=0;
for(int i=1;i<=n;i++)
{
f++;
for(int j=1;j<=m;j++)
a[i][j]*=v[f];
}
for(int i=1;i<=m;i++)
{
f++;
for(int j=1;j<=n;j++)
a[j][i]*=v[f];
}
}