Cod sursa(job #2529825)

Utilizator mihai_22Mihai M mihai_22 Data 24 ianuarie 2020 00:55:34
Problema Jocul Flip Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.69 kb
#include <iostream>
#include<fstream>
using namespace std;


int x4[16], n4;
int i,j, N,M, a[16][16];
long long  suma2, summax , sump  ;

ifstream f("flip.in");
ofstream g ("flip.out");

void citire()
{
    f>>M>>N;
    for(i=0; i<M; i++)
        for(j=0; j<N; j++)
            f>>a[i][j];
}

void minus1( int k)
{
    for(j=0; j<=N; j++)
        a[k][j]*=-1;
}

void copiere()
{

    for(i=0; i<M; i++)
     if(x4[i]==1)
     {
         minus1(i);
         x4[i]=0;
     }
}


void BackRec4(int k)
{
    int p;
    for(p=0; p<=1; p++)
    {
        x4[k]=p;
        if (k==M)
        {
            suma2=0;
            copiere();              /// resetare matrice initiala

            for(int i2=0; i2<M; i2++) /// inmultire linii cu -1
                if(x4[i2]==1)
                    minus1( i2);

            for(int w=0; w<N; w++)       /// calculare modul suma  elemente pozitive si modul de suma elemente negative, pe fiecare coloana
            {
                sump=0;             /// initializare suma cu 0
                for(j=0; j<M; j++)

                        sump+=a[j][w];


                        if(sump>0)       /// calcularea sumei elementelor matricei
                            suma2+=sump;
                        else
                            suma2+=-sump;
            }
            if(suma2>summax)                /// actualizare suma maxima
                summax=suma2;
        }
        else BackRec4(k+1);
    }
}

int main()
{
    citire();

   for(i=0;i<M;i++)           /// initializare suma maxima
    for(j=0;j<N;j++)
    summax+=a[i][j];


    BackRec4(0);
    g<<summax;



    return 0;
}