Pagini recente » Cod sursa (job #1776864) | Cod sursa (job #1409953) | Cod sursa (job #1748876) | Cod sursa (job #1237129) | Cod sursa (job #1470070)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("flip.in");
ofstream g ("flip.out");
int a[21][21],S,i,j,m,n,st[100],k,cop,i1,Max,b[21][21];
void citire()
{
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
f>>a[i][j];
S=S+a[i][j];
}
}
void eliberare()
{
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
{
b[i][j]=0;
}
}
bool bun()
{
if(k==n+m)
return true;
return false;
}
void afisare()
{
cop=S;
for(i=1; i<=k; i++)
{
if(i<=n&&st[i]==1)
{
for(j=1; j<=m; j++)
{
S=S+a[i][j]*-2;
b[i][j]=1;
}
}
else
if(st[i]==1)
{
for(i1=1; i1<=n; i1++)
if(b[i][j]==0)
S=S+a[i1][i-n]*-2;
}
}
eliberare();
Max=max(S,Max);
S=cop;
}
void BKT()
{
k=1;
while(k)
if(st[k]<2)
{
st[k]++;
if(bun())
afisare();
else
k++;
}
else
{
st[k]=0;
k--;
}
}
int main()
{
f>>m>>n;
citire();
BKT();
g<<Max<<" ";
return 0;
}