Cod sursa(job #1916244)

Utilizator maria_sinteaMaria Sintea maria_sintea Data 9 martie 2017 08:44:14
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <cstdio>
#define N 20
#define inf -1000000

using namespace std;

int n, m, a[N][N], bl[N], bc[N], smax=inf;

int suma(int n, int m)
{
    int s1=0, s2=0;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            s1+=a[i][j], s2+=a[i][j]*bl[i]*bc[j];
    if(s1<s2)
        return s2;
    return 0;
}

void parcurg(int i, int j, int n, int m)
{
    if(i>=n && j>=m)
    {
        int sc=suma(n, m);
        if(sc>smax && sc!=0)
            smax=sc;
        return;
    }
    for(int k=-1;k<=1;k+=2)
    {
        bl[i]=k;
        for(int l=-1;l<=1;l+=2)
        {
            bc[j]=l;
            if(i<n && j<m)
                parcurg(i, j+1, n, m), parcurg(i+1, j, n, m);
            else
                if(i<n)
                   parcurg(i+1, j, n, m);
            else
                parcurg(i, j+1, n, m);
        }
    }
}

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

    scanf("%d %d\n", &n, &m);
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            scanf("%d ", &a[i][j]);
    parcurg(0, 0, n, m);
    printf("%d", smax);
    return 0;
}