Cod sursa(job #1815115)

Utilizator Coroian_DavidCoroian David Coroian_David Data 24 noiembrie 2016 20:44:09
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Teme Pregatire ACM Unibuc 2014, Anul II Marime 1.24 kb
#include <cstdio>

using namespace std;

FILE *f, *g;

int n, m, mx, a[17][17], col[17], lin[17], s, bkStk[33], k;

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]), col[j] += a[i][j], lin[i] += a[i][j], s += a[i][j];
    }

    fclose(f);
}

void sol()
{
    int i;

    int rez = s;

    for(i = 1; i <= n; i ++)
    {
        rez -= 2 * (lin[i]) * (bkStk[i] - 1);
    }

    for(i = n + 1; i <= m + n; i ++)
    {
        rez -= 2 * (col[i - n]) * (bkStk[i] - 1);
    }

    if(rez > mx)
        mx = rez;
}

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

    int k = 1, i;

    mx = s;

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

            if(k == n + m)
                sol();

            else
            {
                k ++;

                bkStk[k] = 0;
            }
        }

        else
            k --;
    }
}

void printFile()
{


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

    fclose(g);
}

int main()
{
    readFile();

    solve();

    printFile();

    return 0;
}