Pagini recente » Cod sursa (job #954137) | Cod sursa (job #352251) | Cod sursa (job #2934695) | Cod sursa (job #1429191) | Cod sursa (job #2475226)
#include<bits/stdc++.h>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
int m,n,mat[16][16];
struct info
{
int which;
bool coloana;
};
info iter[40];
void flip_line(int line)
{
for(int i=0; i<n; i++)
{
mat[line][i]*=-1;
}
}
void flip_col(int col)
{
for(int i=0; i<m; i++)
{
mat[i][col]*=-1;
}
}
int sum()
{
int result=0;
for(int i=0; i<m; i++)
{
for(int k=0; k<n; k++)
{
result+=mat[i][k];
}
}
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);
flip_col(iter[index].which);
int b=bkt(index+1);
return max(a,b);
}
else
{
int a=bkt(index+1);
flip_line(iter[index].which);
int b=bkt(index+1);
return max(a,b);
}
}
}
int main()
{
read();
out<<bkt(0);
}