Pagini recente » Cod sursa (job #1256671) | Istoria paginii runda/o_0/clasament | Istoria paginii agm-2018/runda2/clasament | Istoria paginii runda/rmi30000/clasament | Cod sursa (job #2061025)
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m,ma[20][20],l[20],c[20],sMax;
void calcS(int l[], int c[])
{
int s=0,nr;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
{
nr=ma[i][j];
if(l[i]==1)nr*=-1;
if(c[j]==1)nr*=-1;
s+=nr;
}
if(s>sMax)sMax=s;
// for(int i=1;i<=n;++i)g<<l[i]<<" ";
// g<<'\n';
// for(int j=1;j<=m;++j)g<<c[j]<<" ";
}
void calcc(int col,int l[], int c[])
{
c[col]=1;
for(int i=col;i<=m;++i)
{
calcc(col+1,l,c);
calcS(l,c);
}
c[col]=0;
}
void calcl(int lin,int l[], int c[])
{
l[lin]=1;
for(int i=lin;i<=n;++i)
{
for(int j=1;j<=m;++j)calcc(j,l,c);
calcl(lin+1,l,c);
}
l[lin]=0;
// for(int i=1;i<=n;++i)g<<l[i]<<" ";
// g<<endl;
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)f>>ma[i][j];
for(int i=1;i<=n;++i)calcl(i,l,c);
g<<sMax;
return 0;
}