Pagini recente » Cod sursa (job #717505) | Cod sursa (job #3207226) | Cod sursa (job #460407) | Cod sursa (job #2609262) | Cod sursa (job #1262780)
#include <iostream>
#include <algorithm>
#include "stdio.h"
using namespace std;
int N, M;
int matrix[17][17], smax = -1000000000;
int suma()
{
int temp = 0;
for(int i = 0; i < N;i++)
for(int j = 0; j < M;j++)
temp += matrix[i][j];
return temp;
}
void comutaLinia(int row)
{
for(int i = 0;i < M;i++)
matrix[row][i] = - matrix[row][i];
}
void comutaColoana(int col)
{
for(int i = 0;i < N;i++)
matrix[i][col] = - matrix[i][col];
}
void aplicaConfiguratia(int* conf)
{
int t_itr = 0;
for(int i = 0;i < N;i++)
if(conf[t_itr++]) comutaLinia(i);
for(int i = 0;i < M;i++)
if(conf[t_itr++]) comutaColoana(i);
}
void back(int* v, int p, int n)
{
if(p == n){
aplicaConfiguratia(v);
int s = suma();
smax = (s > smax) ? s : smax;
}else{
for(int i = 0; i < 2;i++){
v[p] = i;
back(v,p+1,n);
}
}
}
int main() {
freopen("flip.in","r",stdin);
freopen("flip.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i = 0; i < N;i++){
for(int j = 0; j < M;j++)
scanf("%d",&matrix[i][j]);
}
int asd[50];
back(asd,0,M+N + 1);
printf("%d",smax);
return 0;
}