Cod sursa(job #1692342)

Utilizator savulescustefanSavulescu Stefan savulescustefan Data 20 aprilie 2016 18:32:10
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <cstdio>

using namespace std;
int k,n,i,a[20][20],Max,s[20],m,s1,j;
bool b[20];
inline void verif ()
{
    int s1;
    s1=0;
    for (i=1;i<=m;i++)
    {
        if (s[i]<0)
            s1-=s[i];
        else
            s1+=s[i];
    }
    if (s1>Max)
        Max=s1;
}
inline void back (int k)
{
    int i;
    i=0;
    if (k<=n)
    {
        for (i=1;i<=n;i++)
        {
            if (b[i]==false)
            {
                b[i]=true;
                for (j=1;j<=m;j++)
                    s[j]-=(2*a[i][j]);
                verif ();
                back(k+1);
                for (j=1;j<=m;j++)
                    s[j]+=(2*a[i][j]);
                b[i]=false;
            }
        }
    }
}
int main()
{
    freopen ("flip.in","r",stdin);
    freopen ("flip.out","w",stdout);
    scanf ("%d %d", &n, &m);
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
        {
            scanf ("%d", &a[i][j]);
            s[j]+=a[i][j];
        }
    back(1);
    printf ("%d", Max);
    return 0;
}