Cod sursa(job #300091)

Utilizator chibicitiberiuChibici Tiberiu chibicitiberiu Data 7 aprilie 2009 11:21:48
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.12 kb
#include<fstream>
#define sizelimit 17
using namespace std;

int array[sizelimit][sizelimit];
int n, m;

/*********************************
 *      READ FROM FILE           *
 *********************************/
void read()
{
    ifstream in ("flip.in");
    in>>n>>m;
    for (int i=0;i<n;i++)
         for (int j=0;j<m;j++)
              in>>array[i][j];
    in.close();
}

/*********************************
 *     COMUTA                    *
 *********************************/
void comutalinia(int linia)
{
    for (int i=0;i<m;i++)
        array[linia][i]*=-1;
}

void comutacoloana(int coloana)
{
    for (int i=0;i<n;i++)
        array[i][coloana]*=-1;
}

/*********************************
 *     SUME                      *
 *********************************/
long long sumalinie(int i)
{
    long long temp=0;
    for (int j=0;j<m;j++)
        temp+=array[i][j];
    return temp;
}

long long sumacoloana(int j)
{
    long long temp=0;
    for (int i=0;i<n;i++)
        temp+=array[i][j];
    return temp;
}

long long suma()
{
    long long temp=0;
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
            temp+=array[i][j];
    return temp;
}

/*********************************
 *     FIND BEST SOLUTIONS       *
 *********************************/
void findlinia()
{
    long long sumlin1, sumlin2;
    for (int i=0;i<n;i++) {
        sumlin1=sumalinie(i);
        comutalinia(i);
        sumlin2=sumalinie(i);
        if (sumlin2<sumlin1) comutalinia(i);
    }
}

void findcoloana()
{
    long long sumcol1, sumcol2;
    for (int j=0;j<n;j++) {
        sumcol1=sumacoloana(j);
        comutacoloana(j);
        sumcol2=sumacoloana(j);
        if (sumcol2<sumcol1) comutacoloana(j);
    }
}

/*********************************
 *        MAIN function          *
 *********************************/
int main()
{
    long long temp;
    /// read data from file
    read();
    /// find solutions
    findlinia();
    findcoloana();

    /// output solutions
    temp=suma();
    ofstream out ("flip.out");
    out<<temp;

    /// cleanup
    out.close();
    return 0;
}