Cod sursa(job #1750306)

Utilizator craciuCraciun Alex craciu Data 29 august 2016 21:22:02
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.79 kb
#include <fstream>

using namespace std;

ifstream fin("flip.in");

int m,n,mat[16][16],aux[16][16];

void readArray(){
    fin>>m>>n;
    int aux,i=0,j=0;
    while(fin>>aux){
        mat[i][j]=aux;
        j++;
        if(j==n){
            i++;
            j=0;
        }
    }
}
fin.close();

int sumArray(){
    int s=0;
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++)
            s=s+aux[i][j];
    }
    return s;
}
void copyArray(){
    for(int i=0;i<m;i++){
        for(int j=0;j<n;j++)
            aux[i][j]=mat[i][j];
    }
}

void solveRow(int i,int &s1) {
    if(i==m-1){
        for(int j=0;j<n;j++)
            aux[i][j]=-1*aux[i][j];
        if(sumArray()>s1)
            s1=sumArray();
        else
            s1=s1;
    }else{
        for(int j=0;j<n;j++)
            aux[i][j]=-1*aux[i][j];

        if(sumArray()>s1){
            s1=sumArray();
            solveRow(i+1,s1);
        }
        else {
            for(int j=0;j<n;j++)
                aux[i][j]=-1*aux[i][j];
            solveRow(i+1,s1);
        }
    }
}

void solveCollumn(int j, int &s1) {
    solveRow(0,s1);
    if(j==n-1){
        for(int i=0;i<m;i++)
            aux[i][j]=-1*aux[i][j];
        if(sumArray()>s1)
            s1=sumArray();
        else
            s1=s1;
    }else{
        for(int i=0;i<m;i++)
            aux[i][j]=-1*aux[i][j];

        if(sumArray()>s1){
            s1=sumArray();
            solveCollumn(j+1,s1);
        }
        else {
            for(int i=0;i<m;i++)
                aux[i][j]=-1*aux[i][j];
            solveCollumn(j+1,s1);
        }
    }


}
int main(){

    readArray();
    copyArray();
    int s=sumArray();
    solveCollumn(0,s);

ofstream fout(flip.out)
    fout<<s;
    return 0;
}