Pagini recente » Istoria paginii runda/info_conquiztador/clasament | Cod sursa (job #1825585) | Cod sursa (job #1235649) | Rating Vizinteanu Teodora (TeoVizi) | Cod sursa (job #1518238)
#include <cstdio>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
#define rep(i, from, to) for (int i = from; i < (int)to; ++i)
#define trav(a, x) for (auto& a : x)
#define all(x) x.begin(), x.end()
#define sz(x) (int)x.size()
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef vector<int> vi;
const int N = 1111;
int v[N]; // coloanele
int a[N][N];
int n, m, ans;
void det() {
int best = 0;
rep(i,0,n) {
int sum = 0;
rep(j,0,m) {
sum += a[i][j] * v[j];
}
best += max(sum, -sum); // liniile
}
ans = max(ans, best);
}
void bk(int k) {
if (k == m) {
det();
return;
}
v[k] = 1;
bk(k + 1);
v[k] = -1;
bk(k + 1);
}
int main() {
freopen("flip.in", "r", stdin);
freopen("flip.out", "w", stdout);
cin >> n >> m;
rep(i,0,n) rep(j,0,m) cin >> a[i][j];
bk(0);
cout << ans << endl;
}