Cod sursa(job #751626)

Utilizator ericptsStavarache Petru Eric ericpts Data 26 mai 2012 14:45:15
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <vector>
#include <fstream>


using namespace std;

bool flip[16];
int a[16][16];
int n,m;
long long signed int max_sum = 0x8000000000000000;

void sum()
{
    int i,j;
    long long int c_sum ;
    long long int m_sum = 0;

    for(j=0;j<m;++j)
    {
        c_sum = 0;
        for(i=0;i<n;++i)
        {
            if(flip[i])
                c_sum -= a[i][j];
            else
                c_sum += a[i][j];
        }
        if(c_sum > 0)
            m_sum += c_sum;
        else
            m_sum -= c_sum;
    }
    if(m_sum > max_sum)
        max_sum = m_sum;

}
void backtrack(int a)
{
    if(a == n)
        sum();
    else
    {
        flip[a] = 0;
        backtrack(a+1);
        flip[a] = 1;
        backtrack(a+1);
    }
}

int main()
{
    ifstream in("flip.in");
    ofstream out("flip.out");

    int i,j;

    in >> n >> m;


    for(i=0;i<n;++i)
    for(j=0;j<m;++j)
    in >> a[i][j];

    backtrack(0);
    out << max_sum;
    return 0;
}