Pagini recente » Cod sursa (job #702363) | Cod sursa (job #2750476) | Cod sursa (job #2627181) | Cod sursa (job #313527) | Cod sursa (job #2475229)
#include<bits/stdc++.h>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
int m,n,mat[16][16];
bool opuslinii[16];
bool opuscoloane[16];
struct info
{
int which;
bool coloana;
};
info iter[40];
int sum()
{
int result=0;
for(int i=0; i<m; i++)
{
for(int k=0; k<n; k++)
{
int a=1,b=1;
if(opuslinii[i])
a=-1;
if(opuscoloane[k])
b=-1;
result+=mat[i][k]*a*b;
}
}
return result;
}
void read()
{
in>>m>>n;
for(int i=0; i<m; i++)
{
for(int k=0; k<n; k++)
{
in>>mat[i][k];
}
}
for(int i=0; i<m; i++)
{
iter[i].coloana=false;
iter[i].which=i;
}
for(int i=0; i<n; i++)
{
iter[i+m].coloana=true;
iter[i+m].which=i;
}
}
int bkt(int index)
{
if(index==m+n)
{
return sum();
}
else
{
if(iter[index].coloana)
{
int a=bkt(index+1);
opuscoloane[iter[index].which]=true;
int b=bkt(index+1);
opuscoloane[iter[index].which]=false;
return max(a,b);
}
else
{
int a=bkt(index+1);
opuslinii[iter[index].which]=true;
int b=bkt(index+1);
opuslinii[iter[index].which]=false;
return max(a,b);
}
}
}
int main()
{
read();
out<<bkt(0);
}