Pagini recente » Cod sursa (job #1935817) | Cod sursa (job #1474597) | Cod sursa (job #1861814) | Cod sursa (job #3252991) | Cod sursa (job #1523711)
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int ma=0,n,st[100],v[100],s,m,mat[20][20];
void bkt(int k)
{
int nrl=0,nrc=0,nr,j,i,x,sum=s,mati[20][20];
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
mati[i][j]=mat[i][j];
}
}
for(nr=1;nr<k;nr++)
{
if(st[nr]<=n)
for(i=1;i<=m;i++)
{
sum-=2*mati[st[nr]][i];
mati[st[nr]][i]=mati[st[nr]][i]*(-1);
}
else
for(i=1;i<=n;i++)
{
sum-=2*mati[i][st[nr]-n];
mati[i][st[nr]-n]=mati[i][st[nr]-n]*(-1);
}
}
if(ma<sum)
ma=sum;
if(k<=(n+m)/2)
{
for(i=st[k-1]+1;i<=n+m;i++)
{
if(i<=n&&nrl<n/2)
{
nrl++;
st[k]=i;
bkt(k+1);
nrl--;
}
else
{
nrc++;
st[k]=i;
bkt(k+1);
nrc--;
}
}
}
}
int main()
{
f>>n>>m;
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
f>>mat[i][j];
s+=mat[i][j];
}
}
bkt(1);
g<<ma<<'\n';
return 0;
}