Pagini recente » Cod sursa (job #2270255) | Cod sursa (job #2914786) | Cod sursa (job #416931) | Cod sursa (job #1516738) | Cod sursa (job #1109615)
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int m, n, mat[17][17], i, j, l, sbm[17], sl[17], sc[17], s_tmp, cop, smax=-2000000000, conf[17];
int main()
{
f>>n>>m;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
{
f>>mat[i][j];
sc[j]+=mat[i][j];
}
while (sbm[m+1] == 0)
{
s_tmp=0;
l=1;
while (sbm[l]==1)
{
sbm[l]=0;
l++;
}
sbm[l]=1;
if (sbm[m+1]==0)
{
for (i=1; i<=m; i++)
{
if (sbm[i]==1)
s_tmp+=sc[i]*-1;
else
s_tmp+=sc[i];
}
if (smax < s_tmp)
{
smax = s_tmp;
for (i=1; i<=m; i++)
conf[i]=sbm[i];
}
}
}
for (i=1; i<=m; i++)
{
sbm[i]=0;
if (conf[i]==1)
for (j=1; j<=n; j++)
mat[j][i]*=-1;
}
sbm[m+1]=0;
for (i=1; i<=n; i++)
for (j=1; j<=m; j++)
sl[i]+=mat[i][j];
cop=smax;
while (sbm[n+1] == 0)
{
s_tmp=cop;
l=1;
while (sbm[l]==1)
{
sbm[l]=0;
l++;
}
sbm[l]=1;
if (sbm[n+1]==0)
{
for (i=1; i<=n; i++)
if (sbm[i]==1)
s_tmp+=2*sl[i]*-1;
if (smax < s_tmp)
smax = s_tmp;
}
}
g<<smax;
return 0;
}