Cod sursa(job #2757491)

Utilizator un_fes_galbendaniel guba un_fes_galben Data 5 iunie 2021 12:44:06
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <fstream>

using namespace std;
int mat[20][20],v[25];
int sumcol[25],sumcolinv[25];
int main()
{
    ifstream fin("flip.in");
    ofstream fout("flip.out");
    int n,m,i,j,l,c,max1=0,put2=1;
    fin>>n>>m;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            fin>>mat[i][j];
        }
    }
    for(i=1;i<=n;i++)
    {
        put2*=2;
    }
    put2--;int pas,poz,ci,sum;
    for(i=0;i<=put2;i++)
    {
        pas=1;poz=1;ci=i;sum=0;
        for(j=0;j<=20;j++)
        {
            v[j]=sumcol[j]=sumcolinv[j]=0;
        }
        while(ci>0)
        {
            if(ci&1)
            {
               v[pas]=1;
                poz++;
            }
            pas++;
            ci/=2;
        }
        for(l=1;l<=n;l++)
        {
            if(v[l]==1)
            {
                for(c=1;c<=m;c++)
                {
                    sum+=-1*mat[l][c];
                    sumcol[c]+=-1*mat[l][c];
                    sumcolinv[c]+=mat[l][c];
                }
            }
            else
            {
                for(c=1;c<=m;c++)
                {
                     sum+=mat[l][c];
                    sumcol[c]+=mat[l][c];
                    sumcolinv[c]+=-1*mat[l][c];
                }
            }
        }
        for(j=1;j<=m;j++)
        {
            if(sum-sumcol[j]+sumcolinv[j]>sum)
            {
                sum-=sumcol[j];
                sum+=sumcolinv[j];
            }
        }
        if(sum>max1)
        {
            max1=sum;
        }
    }
    fout<<max1<<'\n';
    return 0;
}