Cod sursa(job #2529036)

Utilizator mihai_22Mihai M mihai_22 Data 22 ianuarie 2020 21:32:20
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.68 kb
#include <iostream>
#include<fstream>
using namespace std;


int x4[15], n4, xc[15];
int i,j, N,M, a[15][15], a2[15][15], suma2 = 0, 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];
}
int suma(int a[15][15],int M,int N) /// calcularea sumei elementelor matricei
{int s=0;
    for(i=0;i<M;i++)
        for(j=0;j<N;j++)
        s+=a[i][j];
    return s;
}
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)
    {

        copiere();

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

            for(int w= 0;w<N;w++)

           {
                sumn=sump=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)
                if(xc[w]==1)
                    xc[w]=0;
                else
                    xc[w]=1;
            }
            for(j=0;j<N;j++)
                if(xc[j]==0)
            {

                for(int ii =0;ii <M;ii++)
                    a[ii][j]*=-1;
            }

            suma2=suma(a2,M,N);
            if(suma2>summax)
                summax=suma2;


    }
    else BackRec4(k+1);
     }
}





int main()
{

    citire();
    summax=suma(a,M,N);
    BackRec4(0);
    cout<<summax<<endl;




  return 0;
}