Cod sursa(job #2443960)

Utilizator Rmrn56Maracine Mihail Robert Rmrn56 Data 29 iulie 2019 21:12:01
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<iostream>
#include<fstream>

using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int a[20][20],maxSum=-1000001,v[2]={-1,1};
int swich=0;//verifica daca linia a fost "flipped"
int n,m;
void citire(int &n,int &m,int a[20][20]){
    int i,j;
    fin>>n>>m;
    for(i=1;i<=n;i++){
        for(j=1;j<=m;j++)
        fin>>a[i][j];
        a[i][swich]=1;
    }

}
void flip_linie(int iaux){
    int j;
    for(j=1;j<=m;j++)
    {
        a[iaux][j]*=-1;

    }
    a[iaux][swich]*=-1;

}


int suma_coloana(int jaux){
    int s=0,i;
    for(i=1;i<=n;i++)
    s+=a[i][jaux];
    return s;

}

int backtracking(int k){
    
    for(int i=0;i<=1;i++){

        if(a[k][swich]!=v[i]){
            int currentSum=0;
            flip_linie(k);
            for(int j=1;j<=m;j++)
            currentSum+=abs(suma_coloana(j));
            if(currentSum>maxSum)maxSum=currentSum;
        }
        if(k<=n-1)
    backtracking(k+1);
    }
    
    return maxSum;
}


int main(){
    int suma=0;
    citire(n,m,a);
  
    maxSum=suma;
    fout<<backtracking(0);
}