Pagini recente » Cod sursa (job #827027) | Cod sursa (job #3138078) | Cod sursa (job #2717913) | Cod sursa (job #2754603) | Cod sursa (job #2615127)
#include <fstream>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
int calcSuma(int n, int m, int mat[][17], int v[]) {
int sumaTotala = 0, sumaColoana = 0;
for(int j = 1; j <= m; ++j) {
sumaColoana = 0;
for(int i = 1; i <= n; ++i) {
if(v[i] == 0)
sumaColoana += mat[i][j];
else
sumaColoana -= mat[i][j];
}
if(sumaColoana < 0)
sumaColoana = -sumaColoana;
sumaTotala += sumaColoana;
}
return sumaTotala;
}
void print(int n, int m, int mat[][17]) {
for(int i = 1; i <= n; ++i, out << '\n')
for(int j = 1; j <= m; ++j)
out << mat[i][j] << ' ';
}
void back(int k, int mat[][17], int v[], int n, int m, int &smax) {
for(int i = 0; i <= 1; ++i) {
v[k] = i;
if(k == n) {
int s = calcSuma(n, m, mat, v);
if(s > smax)
smax = s;
}
else
back(k + 1, mat, v, n, m, smax);
}
}
int main() {
int n, m, a[17][17], v[17], smax = 0;
in >> n >> m;
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
in >> a[i][j];
back(1, a, v, n, m, smax);
out << smax;
in.close();
out.close();
return 0;
}