Cod sursa(job #3138390)

Utilizator TeodoraMaria123Serban Teodora Maria TeodoraMaria123 Data 19 iunie 2023 13:19:56
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include <bits/stdc++.h>

using namespace std;

const int MAX_N = 16;
const int MAX_M = 16;

int n, m, ans;
int a[MAX_N + 1][MAX_M + 1], sol[MAX_N + 1], sumP[MAX_N + 1][MAX_M + 1];

void calculate()
{
//    for(int i = 0; i < n; i ++)
//        cout << sol[i] << " ";
////    cout << "\n";
//cout << "\n";
    for(int i = 1; i <= n; i ++)
    {
        int coef = -sol[i - 1];
        if(!coef)
            coef = 1;
        for(int j = 1; j <= m; j ++)
            sumP[i][j] = sumP[i - 1][j] + coef * a[i][j];
//            cout << sumP[i - 1][j] << " " << a[i][j] << "  ";}
//            cout << "\n";
    }

    int sum = 0;
    for(int j = 1; j <= m; j ++)
    {
        sum += max(sumP[n][j], -sumP[n][j]);
//        cout << sumP[n][j] << " ";
    }
    ans = max(ans, sum);
//    cout << sum << "\n";

}

void bkt(int k)
{
    if(k == n)
    {
        calculate();
        return;
    }
    for(int i = 0; i <= 1; i ++)
    {
        sol[k] = i;
        bkt(k + 1);
    }
}

int main()
{
    ios_base :: sync_with_stdio(0);
    cin.tie(0);

    freopen("flip.in", "r", stdin);
    freopen("flip.out", "w", stdout);

    cin >> n >> m;

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

    bkt(0);

    cout << ans;
    return 0;
}