Pagini recente » Istoria paginii runda/listare-onis | Cod sursa (job #2743045) | Cod sursa (job #1210149) | Cod sursa (job #1449949) | Cod sursa (job #1400567)
#include <fstream>
#include <algorithm>
#define NMAX 17
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int mat[NMAX][NMAX], i, j, n, m, v[NMAX], cont1, answer=-2000000000, cont2;
void afis()
{
for (int i=0; i<=n; ++i)
{
for (int j=0; j<=m; ++j)
g<<mat[i][j]<<" ";
g<<'\n';
}
g<<'\n';
}
int suma()
{
int rez=0;
for (int i=1; i<=n; ++i)
for (int j=1; j<=m; ++j)
rez+=mat[i][j]*mat[0][j]*mat[i][0];
return rez;
}
int main()
{
f>>n>>m;
cont1=(1<<n);
cont2=(1<<m);
for (i=1; i<=n; ++i)
for (j=1; j<=m; ++j)
f>>mat[i][j];
for (i=1; i<=n; ++i) mat[i][0]=1;
for (j=1; j<=m; ++j) mat[0][j]=1;
while (cont1)
{
for (i=1; i<=n; ++i)
if (mat[i][0]==1)
{
mat[i][0]=-1;
break;
}
else
mat[i][0]=1;
cont2=(1<<m);
while (cont2)
{
for (j=1; j<=m; ++j)
if (mat[0][j]==1)
{
mat[0][j]=-1;
break;
}
else
mat[0][j]=1;
answer=max(answer,suma());
cont2--;
}
cont1--;
}
g<<answer<<'\n';
return 0;
}