Pagini recente » Cod sursa (job #532270) | Cod sursa (job #1902011) | Cod sursa (job #1246529) | Cod sursa (job #1846652) | Cod sursa (job #1347165)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("flip.in");
ofstream out ("flip.out");
int V[17][17]={0},n,m,mx=0;
bool R[17]={false},C[17]={false};
int megerie_col(int t)
{
int m1=0,m2=0;;
for(int i=1;i<=m;i++)
{
m1+=V[t][i];
m2+=-V[t][i];
}
if(m2>m1)
return 1;
else
return 0;
}
int megerie_row(int t)
{
int m1=0,m2=0;;
for(int i=1;i<=n;i++)
{
m1+=V[i][t];
m2+=-V[i][t];
}
if(m2>m1)
return 1;
else
return 0;
}
int sum()
{
int t=0;
for (int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
t+=V[i][j];
mx=max(mx,t);
}
void read()
{
in>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
in>>V[i][j];
}
void flip_row(int t)
{
for(int i=1;i<=m;i++)
V[t][i]*=-1;
R[t]=!R[t];
}
void flip_col(int t)
{
for( int i=1;i<=n;i++)
V[i][t]*=-1;
C[t]=!C[t];
}
void combcol(int k,int a)
{
if(a<=k)
{
for(int i=1;i<=m;i++)
{
if(C[i]==0&&megerie_col(i)==1)
{
flip_col(i);
combcol(k,a+1);
flip_col(i);
}
}
}
else
{
sum();
}
}
void combrow(int k,int a)
{
if(a<=k)
{
for(int i=1;i<=n;i++)
{
if(R[i]==0&&megerie_row(i)==1){
flip_row(i);
combrow(k,a+1);
flip_row(i);
}
}
}
else
{
for(int j=0;j<=m;j++)
combcol(j,1);
}
}
int main()
{
read();
for(int i=0;i<=n;i++)
combrow(i,1);
out<<mx;
in.close();
out.close();
}