Cod sursa(job #2240040)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 12 septembrie 2018 10:49:58
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.04 kb
#include <fstream>
#include <cmath>
#define Nmax 18

using namespace std;

ifstream f("flip.in");
ofstream g("flip.out");

int n, m;
int a[Nmax][Nmax], b[Nmax][Nmax];
int niv, niv2,stot;
int v[Nmax], w[Nmax];
int ans;
/*
void bkt2(int p)
{
    if(p == niv2+1)
    {
      int s=0;
        for ( int i = 1; i <= niv; i ++ )
            for ( int j = 1; j <= niv2; j ++ )
            s=s+(-1)*a[v[i]][w[j]];
        ans=max(ans, s);
      //for ( int i = 1; i <= niv2; i ++ )
      //  g << w[i] << " ";
     // g << '\n';

    }
    else
    {
        for ( int i = w[p-1]+1; i <= m; i ++ )
        {
            w[p]=i;
            bkt2(p+1);
        }
    }
}

void bkt(int p)
{
    if(p == niv+1)
    { //for ( int i = 1; i <= niv; i ++ )
      //  g << v[i] << " "; g << '\n';
      for (niv2=1; niv2 <= m ; niv2 ++ )
        bkt2(1);
        //g << '\n';
        //g << '\n';
    }
    else
    {
        for ( int i = v[p-1]+1; i <= n; i ++ )
        {
            v[p]=i;
            bkt(p+1);
        }
    }
}
*/

void calc()
{
    int s=0;
    for ( int i = 1; i <= n; i ++ )
     for ( int j = 1; j <= m; j ++ )
     s+=w[j]*v[i]*a[i][j];
    ans=max(ans, s);
}

int main()
{
    f >> n >> m;
    for ( int i = 1; i <= n; i ++ )
        for ( int j = 1; j <= m; j ++ )
         f >> a[i][j], stot+=a[i][j];
    int pn=(1 << n);
    int pm=(1 << m);
    for ( int i = 1; i < pn; i ++ )
    {
        for ( int j = 0; j < n; j ++ )
            if(i&(1 << j))
            {
                for ( int k = 1; k <= m; k ++ )
                    b[j+1][k]=-a[j+1][k];
            }
            else
            {
                for ( int k = 1; k <= m; k ++ )
                    b[j+1][k]=a[j+1][k];
            }
          int sum=0;
        for ( int j = 1; j <= m; j ++ )
        {
            int s=0;
            for ( int u = 1; u <= n ; u ++ )
                s+=b[u][j];

            sum+=fabs(s);
        }
        ans=max(ans, sum);

    }
    g << ans;
    return 0;
}