Cod sursa(job #6124)

Utilizator flo_demonBunau Florin flo_demon Data 17 ianuarie 2007 19:18:47
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <stdio.h>
#include <iostream>

using namespace std;

#define MAX 20
#define INF 999999999

int n, m, a[MAX][MAX];
int aux, total, best = -INF, sum;
int x[MAX];

void compute();
void back(int k);

int main()
{
    FILE *fin = fopen("flip.in", "r");
    fscanf(fin, "%d%d", &n, &m);
    for (int i = 1; i <= n; ++i)
        for (int j = 1; j <= m; ++j)
            fscanf(fin, "%d", &a[i][j]);
    fclose(fin);
    
    back(1);
    
    FILE *fout = fopen("flip.out", "w");
    fprintf(fout, "%d\n", best);
    fclose(fout);
    
    return 0;
}

void back(int k)
{
    for (int i = 0; i <= 1; ++i)
    {
        x[k] = i;
        if (k >= m) compute();
        else
            back(k+1);
    }
}

void compute()
{
    total = 0;
    for (int i = 1; i <= n; ++i)
    {
        sum = 0;
        for (int j = 1; j <= m; ++j)
        {
            if (x[j] == 1)
                sum -= a[i][j];
            else
                sum+= a[i][j]; 
        }
        if (-sum > sum)
            sum *= -1;
        total += sum;
    }
    if (total > best)
        best = total;
}