Pagini recente » Istoria paginii runda/adunare/clasament | Monitorul de evaluare | Statistici Gioanca Raul (RaulG99) | Diferente pentru runda/kingoni intre reviziile 14 si 16 | Cod sursa (job #2012144)
#include <iostream>
#include <fstream>
using namespace std;
int a[17][17],m,n,rez=0,var[17][17],b[17];
ifstream g("flip.in");
ofstream f("flip.out");
void citire()
{int i,j;
for (i=1;i<=m;i++)
{for (j=1;j<=n;j++)
g>>a[i][j];}}
void cop()
{int i,j;
for (i=1;i<=m;i++)
for (j=1;j<=n;j++)
var[i][j]=a[i][j];
}
void sum()
{int i,s=0,j,v;
for (i=1;i<=m;i++)
{for (j=1;j<=n;j++)
{var[i][j]=var[i][j]*b[i];}}
for (j=1;j<=n;j++)
{v=0;
for (i=1;i<=m;i++)
{v=v+var[i][j];}
if (v<=0) s=s-v;
else s=s+v;}
if (s>rez) rez=s;
}
void bkt(int k)
{if (k==m) {b[k]=1;
cop();
sum();
b[k]=-1;
cop();
sum();
}
if (k<m) {b[k]=1;
bkt(k+1);
b[k]=-1;
bkt(k+1);}
}
int main()
{g>>m>>n;
citire();
bkt(1);
f<<rez;
f.close();
g.close();
return 0;
}