Pagini recente » Cod sursa (job #2472646) | Cod sursa (job #1077645) | Cod sursa (job #965951) | Cod sursa (job #15928) | Cod sursa (job #1842617)
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int a[17][17],sl[17],sc[17],S,smax,op;
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 && op==0;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 && op==0 ;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];
}
op=1;
}
int main()
{
Citire();
Back();
fout<<smax;
return 0;
}