Cod sursa(job #1005744)

Utilizator Mihai96Saru Mihai Mihai96 Data 5 octombrie 2013 18:00:27
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <fstream>
#include <cstdlib>

using namespace std;

void readData(int matrix[17][17], int &n, int &m){
    ifstream fin("flip.in");

    fin>>n>>m;
    for(int i = 0;i < n;i++)
        for(int j = 0;j < m;j++)
            fin>>matrix[i][j];

    fin.close();
}

int findBestSum(int matrix[17][17], int n, int m){
    int sLocal1, sLocal2;

    int sTotal1 = 0;
    for(int i = 0;i < n;i++){
        sLocal1 = 0;
        sLocal2 = 0;
        for(int j = 0;j < m;j++){
            sLocal1 += -1*matrix[i][j];
            sLocal2 += matrix[i][j];
        }
        if(sLocal1 > sLocal2){
            for(int j = 0;j < m;j++)
                matrix[i][j] *= -1;
            sTotal1 += sLocal1;
        }else
            sTotal1 += sLocal2;
    }

    int sTotal2 = 0;
    for(int j = 0;j < m;j++){
        sLocal1 = 0;
        sLocal2 = 0;
        for(int i = 0;i < n;i++){
            sLocal1 += -1*matrix[i][j];
            sLocal2 += matrix[i][j];
        }
        if(sLocal1 > sLocal2)
            sTotal2 += sLocal1;
        else
            sTotal2 += sLocal2;
    }

    int sTotal = sTotal1 + 2*abs(sTotal1-sTotal2);

    return sTotal;
}

void writeData(int x){
    ofstream fout("flip.out");
    fout<<x;
    fout.close();
}

int main()
{
    int gameBoard[17][17];
    int rows, columns;

    readData(gameBoard, rows, columns);
    int result = findBestSum(gameBoard, rows, columns);
    writeData(result);

    return 0;
}