Pagini recente » Cod sursa (job #2089233) | Cod sursa (job #1008210) | Cod sursa (job #1529355) | Clasament simulare_oji2008 | Cod sursa (job #2482699)
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m, mat[16][16], sum_max_l = 0, sum_max_t = 0;
void read(){
fin>>n>>m;
for(int i = 0; i<n; i++)
for(int j = 0; j<m; j++)
fin>>mat[i][j];
}
void flip_l(int l){
for(int j = 0; j<m; j++)
mat[l][j]*=-1;
}
void flip_c(int c){
for(int i = 0; i<n; i++)
mat[i][c]*=-1;
}
int sum(){
int s = 0;
for(int i = 0; i<n; i++)
for(int j = 0; j<m; j++)
s+=mat[i][j];
return s;
}
void Back_l(int k){
for(int i = 0; i<=1; i++){
if(i)
flip_l(k);
if(k == n-1){
int s = sum();
if(s>sum_max_l)
sum_max_l = s;
}
else
Back_l(k+1);
}
}
void backTr(int k){
for(int i = 0; i<=1; i++){
if(i)
flip_c(k);
if(k == m-1){
Back_l(0);
if(sum_max_l>sum_max_t)
sum_max_t = sum_max_l;
}
else
backTr(k+1);
}
}
int main()
{
read();
backTr(0);
fout<<sum_max_t;
return 0;
}