Cod sursa(job #2083664)

Utilizator Teodor.mTeodor Marchitan Teodor.m Data 7 decembrie 2017 22:44:36
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <bits/stdc++.h>

using namespace std;

typedef long long int ll;
typedef long double ld;

inline void debugMode() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    #ifndef ONLINE_JUDGE
    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);
    #endif // ONLINE_JUDGE
}
inline void PrintYes() { cout << "Yes"; }
inline void PrintNo() { cout << "No"; }

const double eps = 1e-7;

int a[17][17], v[50], n, m;
int ans;

/// in v[] voi retine cu cat este inmultita linia i --> v[i] = -1 => linia i este inmultita cu -1
///                                                 --> v[i] = 1  => linia i este inmultita cu 1


void solve(int k)
{
    int sum = 0;
    for(int j = 1; j <= m; ++j) {
        int s_col = 0;
        for(int i = 1; i <= n; ++i) {
            s_col += v[i] * a[i][j];
        }
        if(s_col < 0)
            s_col = -s_col;

        sum += s_col;
    }

    if(sum > ans)
        ans = sum;
}

void Back(int k)
{
    for(int i = -1; i <= 1; i += 2) {
        v[k] = i;
        if(k == n)
            solve(k);
        else
            Back(k + 1);
    }
}

int main()
{
	debugMode();

    cin >> n >> m;

    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j)
            cin >> a[i][j];

    Back(1);

    cout << ans;
	return 0;
}