Pagini recente » Cod sursa (job #291824) | Cod sursa (job #1763728) | Cod sursa (job #2098281) | Cod sursa (job #2524969) | Cod sursa (job #1792140)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int x[17][17],smax, stop=0;
int n,m;
long long getsum()
{
long long sa=0;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
sa += x[i][j]*x[0][j]*x[i][0];
}
}
return sa;
}
void sumv()
{
int pnm=getsum();
if(pnm>smax)
{
smax=pnm;
}
}
void init()
{
for(int a=m;a>=1;a--)
x[a][0]=1;
for(int a=1;a<=n;a++)
x[0][a]=1;
}
int nextp(){
int mademod=0;
long long sa;
for(int i=1;i<=m;i++)
{
sa=0;
for(int j=1;j<=n;j++)
{
sa += x[i][j]*x[0][j]*x[i][0];
}
if(sa<0)
{
mademod=1;
sumv();
x[i][0]*=-1;
sumv();
}
if(sa==0)
{
int x1=getsum();
x[i][0]*=-1;
if(x1>=getsum())x[i][0]*=-1;
else {mademod=1;sumv();}
}
}
for(int j=1;j<=n;j++)
{
sa=0;
for(int i=1;i<=m;i++)
{
sa +=x[i][j]*x[0][j]*x[i][0];
}
if(sa<0)
{
mademod=1;
sumv();
x[0][j]*=-1;
sumv();
}
if(sa==0)
{
mademod=1;
int x1=getsum();
x[0][j]*=-1;
if(x1>=getsum())x[0][j]*=-1;
else {mademod=1;sumv();}
}
}
return mademod;
}
int main()
{
f>>m>>n;
init();
for(int i=1;i<=m;i++)
{
for(int j=1;j<=n;j++)
{
f>>x[i][j];
}
}
while(nextp())
{
}
g<<smax;
}