Pagini recente » Cod sursa (job #3262392) | Cod sursa (job #271292) | Cod sursa (job #646340) | Cod sursa (job #1859791) | Cod sursa (job #3209750)
#include <iostream>
#include <fstream>
#include <climits>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int smax=INT_MIN;
int n, m;
int tabla[17][17];
int stare[17];//vector ce retine starea fiecarui element de pe o coloana (0-normal, 1-inversat)
void rezolva(){
int S=0;//suma per total
for (int i=1; i<=n; ++i){
int s=0;//suma coloana
for (int j=1; j<=m; ++j){
if (stare[j]){
s-=tabla[i][j];
}
else {
s+=tabla[i][j];
}
}
if (s<0){
S-=s;
}
else {
S+=s;
}
}
if (S>smax){
smax=S;
}
}
void backtr(int k){
for (int i=0; i<=1; ++i){
stare[k]=i;
if (k==m){
rezolva();
}
else {
backtr(k+1);
}
}
}
int main()
{
fin >> n >> m;
for (int i=1; i<=n; ++i){
for (int j=1; j<=m; ++j){
fin >> tabla[i][j];
}
}
backtr(1);
cout << smax;
return 0;
}