Cod sursa(job #1815613)

Utilizator Coroian_DavidCoroian David Coroian_David Data 25 noiembrie 2016 14:55:56
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 1.43 kb
#include <cstdio>

using namespace std;

FILE *f, *g;

int n, m, mx;

int a[17][17];

int v[18];

void readFile()
{
    f = fopen("flip.in", "r");

    fscanf(f, "%d%d", &n, &m);

    int i, j;

    for(i = 1; i <= n; i ++)
    {
        for(j = 1; j <= m; j ++)
            fscanf(f, "%d", &a[i][j]);
    }

    fclose(f);
}

void bk()
{
    int k = 1, i, j;

    int s = 0, col = 0;

    while(k != 0)
    {
        if(v[k] < 2)
        {
            v[k] ++;

            if(k == n + 1)
            {
                s = 0;

                for(j = 1; j <= m; j ++)
                {
                    col = 0;

                    for(i = 1; i <= n; i ++)
                    {
                        if(v[i] == 2)
                            col += a[i][j];

                        else
                            col += (- a[i][j]);
                    }

                    if(col < 0)
                        col = - col;

                    s += col;
                }

                if(s > mx)
                    mx = s;
            }

            else
                k ++, v[k] = 0;
        }

        else
            k --;
    }
}

void solve()
{
    bk();
}

void printFile()
{
    g = fopen("flip.out", "w");

    fprintf(g, "%d\n", mx);

    fclose(g);
}

int main()
{
    readFile();

    solve();

    printFile();

    return 0;
}