Pagini recente » Cod sursa (job #1069586) | Cod sursa (job #1785437) | Cod sursa (job #3159113) | Cod sursa (job #2027705) | Cod sursa (job #2601379)
#include <iostream>
#include <fstream>
#include <queue>
#define ll long long
#define inf 1000000005
using namespace std;
ll n,m,r,c;
priority_queue <ll> q;
ll M[17][17];
ll st[17];
ll v[17];
ll Max=-inf;
void Check()
{
ll i,j;
ll s=0;
for (j=1;j<=m;j++)
{
s=0;
for (i=1;i<=n;i++)
{
if (st[i]==0)
s+=M[i][j];
else
s-=M[i][j];
}
if (s<0)
v[j]=1;
}
s=0;
/* for (i=1;i<=n;i++)
cout<<st[i]<<" ";
cout<<" ";
for (i=1;i<=m;i++)
cout<<v[i]<<" ";*/
for (i=1;i<=n;i++)
{
for (j=1;j<=m;j++)
{
if (st[i]==1)
M[i][j]*=-1;
if (v[j]==1)
M[i][j]*=-1;
s+=M[i][j];
}
}
// cout<<s<<"\n";
if (s>Max)
Max=s;
}
void Back(ll i)
{
if (i>n)
{
Check();
}
else
{
st[i]=1;
Back(i+1);
st[i]=0;
Back(i+1);
}
}
int main()
{
ifstream in("flip.in");
ofstream out("flip.out");
in>>n>>m;
ll i,j;
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
in>>M[i][j];
Back(1);
out<<Max<<"\n";
out.close();
in.close();
return 0;
}