Cod sursa(job #3161281)

Utilizator LucaTheLORDLuke Cutler LucaTheLORD Data 26 octombrie 2023 14:24:37
Problema Jocul Flip Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <fstream>
using namespace std;
ifstream cin("flip.in");
ofstream cout("flip.out");
int n, m, a[17][17], v[35],maxi=-10000000;
int x[35];
void suma(int o[][17],int x,int y)
{
    long long sum=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            sum+=o[i][j];
    if(maxi<sum)
        maxi=sum;
}
void prelucare()
{
    for (int i = 1; i <= m + n; i++)
    {
        if (v[i] == 0)
            x[i] = -1;
        else
            x[i] = 1;
    }
    // for (int i = 1; i <= m + n; i++)
    // cout<<x[i]<<" ";

    int cmat[17][17];
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
            cmat[i][j] = a[i][j];
    }
    int cnt = 0;
    for (int i = 1; i <= n; i++)
    {
        cnt++;
        for (int j = 1; j <= m; j++)
            cmat[i][j] = x[cnt] * cmat[i][j];
    }

    for (int j = 1; j <= m; j++)
    {
        cnt++;
        for (int i = 1; i <= n; i++)
            cmat[i][j] = cmat[i][j] * x[cnt];
    }
    //  for (int i = 1; i <= n; i++,cout<<'\n')
    //     for (int j = 1; j <= m; j++)
    //     {
    //         cout<<cmat[i][j]<<" ";
    //     }
    // cout<<'\n';
    suma(cmat,n,m);


}
void back(int k)
{
    for (int i = 0; i <= 1; i++)
    {
        v[k] = i;
        if (k == n + m)
            prelucare();
        else
            back(k + 1);
    }
}
int main()
{

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