Cod sursa(job #2263383)

Utilizator vladboss2323Ciorica Vlad vladboss2323 Data 18 octombrie 2018 17:31:16
Problema Jocul Flip Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 2.4 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int N=20;

int a[N][N],n,m,smax=-10000000,semn[N];

int rez()
{
    int S=0,S1=0,i,j;
    for(j=1; j<=m; j++)
    {
        S=0;
        for(i=1; i<=n; i++)
        {
            if(semn[i])
                S=S-a[i][j];
            else
                S=S+a[i][j];
        }
        if(S<0)
            S1=S1-S;
        else
            S1=S1+S;
    }
    return S1;
}

int main()
{
    int i,j,S=0;
    in>>n>>m;
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {
            in>>a[i][j];
            /*if(a[i][j]>0)
                Spl[i]=Spl[i]+a[i][j];
            else
                Snl[i]=Snl[i]+a[i][j];
                */
        }

    }
    for(i=1; i<(1<<n); i++)
    {
        for(j=0; (1<<j)<=i; j++)
        {
            {
                if((1<<j) & i)
                    semn[j+1]=1;
                else
                    semn[j+1]=0;
            }
        }
        //for(j=0; (1<<j)<=i;j++)
          //   out<<semn[j]<<" ";
        out<<rez()<<endl;
        smax=max(rez(),smax);
    }
    out<<smax;
    /*
    for(i=1; i<=n; i++)
         out<<Snl[i]<<" ";
     out<<'\n';
     for(i=1; i<=n; i++)
         out<<Spl[i]<<" ";
     out<<'\n';
     for(i=1; i<=n; i++)
         if(Snl[i]>Spl[i])
         {
             for(j=1; j<=m; j++)
                 a[i][j]=-a[i][j];
         }
    for(j=1; j<=m; j++)
    {
        for(i=1; i<=n; i++)
        {
            if(a[i][j]>0)
                Spc[j]=Spc[j]+a[i][j];
            else
                Snc[j]=Snc[j]+a[i][j];
        }
        if(Snc[j]>Spc[j])
            S=S-Snc[j];
        else
            S=S+Spc[j];
    }
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=m; j++)
        {
            if(Snl[i]>Spl[i] && Snc[j]>Snc[j])
            {

                if(Snl[i]<Snc[j])
                {
                    aux=Snl[i];
                    Snl[i]=Spl[i];
                    Spl[i]=aux;
                    Snc[j]=Snc[j]+(-a[i][j]);
                }
                else
                {
                    aux=Snl[i];
                    Snl[i]=Spl[i];
                    Spl[i]=aux;
                    Snc[j]=Snc[j]+(-a[i][j]);
                }
            }

        }
        */
    return 0;
}