Cod sursa(job #2529804)

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


int x4[15], n4;
int i,j, N,M, a[15][15], a2[15][15], suma2, summax , sump, sumn;

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 copiere()
{

    for(i=0; i<M; i++)
        for(j=0; j<N; j++)
            a2[i][j]=a[i][j];
}

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

void BackRec4(int k)
{
    int i;
    for(i=0; i<=1; i++)
    {
        x4[k]=i;
        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

            {
                sumn=sump=0;             /// initializare suma el poz/neg cu 0
                for(j=0; j<M; j++)
                    if(a2[j][w]>=0)
                        sump+=a2[j][w];
                    else
                        sumn-=a2[j][w];

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

int main()
{
    citire();
    summax=0;
    BackRec4(0);
    g<<summax;

    return 0;
}