Pagini recente » Cod sursa (job #1930116) | Cod sursa (job #2823575) | Cod sursa (job #501014) | Cod sursa (job #3160785) | Cod sursa (job #2461725)
#include<iostream>
#include<cstdio>
FILE * f=fopen("flip.in","r");
FILE * g=fopen("flip.out","w");
using namespace std;
int n,nr=-1,m;
int st[22],st1[22],a[20][20],b[20][20],c[20][20];
int t[3];
void citire( )
{ int i,j;
fscanf(f,"%d %d",&n,&m);
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
fscanf(f,"%d",&a[i][j]);
}
}
}
int suma(int y[20][20])
{
int i,j,s=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
s=s+y[i][j];
}
}
return s;
}
void coloana(int j,int y[20][20])
{
int i;
for(i=1;i<=n;i++)
y[i][j]=y[i][j]*(-1);
}
void linie(int j,int y[20][20])
{
int i;
for(i=1;i<=m;i++)
y[j][i]=y[j][i]*(-1);
}
int nrmax;
void back2( );
void back1( )
{int r1,r2;
int i;
if(st[0])
{for(r1=1;r1<=n;r1++)
{
for(r2=1;r2<=m;r2++)
{
b[r1][r2]=a[r1][r2];
}
}
for(i=1;i<=st[0];i++)
{
linie(st[i],b);
}
back2( );
}
for(i=st[st[0]]+1;i<=n;i++)
{
st[++st[0]]=i;
back1();
st[st[0]]=0;
st[0]--;
}
}
void back2( )
{
int i,r1,r2;
if(st1[0])
{ for(r1=1;r1<=n;r1++)
{
for(r2=1;r2<=m;r2++)
{
c[r1][r2]=b[r1][r2];
}
}
for(i=1;i<=st1[0];i++)
{
coloana(st1[i],c);
}
if(nrmax<suma(c))
nrmax=suma(c);
}
for(i=st1[st1[0]]+1;i<=m;i++)
{
st1[++st1[0]]=i;
back2();
st1[st1[0]]=0;
st1[0]--;
}
}
int main()
{citire( );
back1( );
fprintf(g,"%d",nrmax);
return 0;
}