Cod sursa(job #2840994)

Utilizator C_R_I_S_T_I_2_3Cristi Gavrila C_R_I_S_T_I_2_3 Data 29 ianuarie 2022 10:08:43
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.57 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int n, m, sum, summax;
int a[20][20], c[20][20];
int st[20];
inline void Citire()
{
    fin >> n >> m;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
            fin >> a[i][j];
}
inline void Prelucrare()
{
    int sumaux = 0;
    sum = 0;
    // for(int i=1; i<=m; i++)
    // {
    //     if(st[i] == 1)
    //         cout << i << " ";
    // }
    // cout << "\n";
    for(int i=1; i<=n; i++)
    {
        c[i][0] = 0;
    }
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            if(st[j] == 1)
                c[i][j] = -a[i][j];
            else
                c[i][j] = a[i][j];
            c[i][0] += c[i][j];
        }
    }
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        {
            sumaux += -c[i][j];
        }
        sum += max(c[i][0], sumaux);
        sumaux = 0;
    }
    summax = max(summax, sum);
    // for(int i=1; i<=n; i++)
    // {
    //     for(int j=0; j<=m; j++)
    //     {
    //         if(c[i][j] >= 0)
    //             fout << " ";
    //         fout << c[i][j] << " ";
    //     }
    //     fout << "\n";
    // }
    // fout << sum << "\n";
}
inline void Gen(int top)
{
    if(top==m+1)
        Prelucrare();
    else
    {
        for(int i=0; i<=1; i++)
        {
            st[top]=i;
            Gen(top+1);
        }
    }
}
int main()
{
    Citire();
    Gen(1);
    fout << summax;
    return 0;
}