Pagini recente » Cod sursa (job #594499) | Monitorul de evaluare | Monitorul de evaluare | Cod sursa (job #459731) | Cod sursa (job #1842555)
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int a[17][17],sl[17],sc[17],S,smax;
short int n,m;
void Citire()
{ int i,j;
fin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{fin>>a[i][j]; sl[i]+=a[i][j]; sc[j]+=a[i][j]; S+=a[i][j];}
}
void Back()
{ int i,j;
for(i=1;i<=n;i++)
if(S<S+2*(-sl[i]))
{ S=S+2*(-sl[i]);
sl[i]=-sl[i];
for(j=1;j<=m;j++)
{ sc[j]=sc[j]+2*(-a[i][j]);
a[i][j]=-a[i][j];
}
if(smax<S) smax=S;
Back();
for(j=1;j<=m;j++)
{ sc[j]=sc[j]+2*(-a[i][j]);
a[i][j]=-a[i][j];
}
S=S-2*sl[i];
sl[i]=-sl[i];
}
for(j=1;j<=m;j++)
if(S<S+2*(-sc[j]))
{ S=S+2*(-sc[j]);
sc[j]=-sc[j];
for(i=1;i<=n;i++)
{ sl[i]=sl[i]+2*(-a[i][j]);
a[i][j]=-a[i][j];
}
if(smax<S) smax=S;
Back();
for(i=1;i<=n;i++)
{ sl[i]=sl[i]+2*(-a[i][j]);
a[i][j]=-a[i][j];
}
S=S-2*sc[j];
sc[j]=-sc[j];
}
}
int main()
{
Citire();
Back();
fout<<smax;
return 0;
}