Pagini recente » Cod sursa (job #2338480) | Cod sursa (job #1554654) | Cod sursa (job #1362588) | Cod sursa (job #1558280) | Cod sursa (job #2468383)
#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std;
int n,m;
int **a;
void read()
{
ifstream fin ("flip.in");
fin >> n >> m;
a=(int**)malloc(n*sizeof(int*));
for(int i=0;i<n;i++)
{
a[i]=(int*)malloc(sizeof(int)*m);
}
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
fin >> a[i][j];
}
}
fin.close();
}
void printa()
{
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout << a[i][j] << ' ';
}
cout << '\n';
}
}
void freea()
{
for(int i=0;i<n;i++)
{
free(a[i]);
}
free(a);
}
int lsum(int l)
{
int s=0;
for(int i=0;i<m;i++)
{
s+=a[l][i];
}
return s;
}
int csum(int c)
{
int s=0;
for(int i=0;i<n;i++)
{
s+=a[i][c];
}
return s;
}
void sl(int l)
{
for(int i=0;i<m;i++)
{
a[l][i]=-a[l][i];
}
}
void sc(int c)
{
for(int i=0;i<n;i++)
{
a[i][c]=-a[i][c];
}
}
void print(int s)
{
ofstream fout("flip.out");
fout << s << endl;
fout.close();
}
int su=0;
void check()
{
int ns=0;
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
ns+=a[i][j];
}
}
su = min(su,ns);
}
void bc(int c);
void bl(int c);
void bl(int l)
{
check();
if(l<n)
{
sl(l);
bl(l+1);
bc(0);
sl(l);
}
}
void bc(int c)
{
check();
if(c<n)
{
sc(c);
bc(c+1);
bl(0);
sc(c);
}
}
int main()
{
read();
bl(0);
//bc(0);
print(su);
//printa();
freea();
return 0;
}