Cod sursa(job #2456662)

Utilizator etienAndrone Stefan etien Data 15 septembrie 2019 01:09:37
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<fstream>
#include<cmath>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int m,n,mat[17][17],i,j,p,ci,k[17][17],maxim;
void cr(int r)
{
    int ii;
    for(ii=1;ii<=n;ii++)
    {
        mat[r][ii]=-mat[r][ii];
    }
}
void cc(int c)
{
    int ii;
    for(ii=1;ii<=m;ii++)
    {
        mat[ii][c]=-mat[ii][c];
    }
}
void reset()
{
    int ii,jj;
    for(ii=0;ii<=m;ii++)
        for(jj=0;jj<=n;jj++)
            mat[ii][jj]=k[ii][jj];
}
int main()
{
    fin>>m>>n;
    for(i=1;i<=m;i++)
        for(j=1;j<=n;j++)
            {fin>>mat[i][j];
            k[i][j]=mat[i][j];}
    maxim=-1000000000;
    p=pow(2,m);
    for(i=1;i<=p;i++)
    {
        ci=i;
        for(j=1;j<=m&&ci>0;j++)
        {
            if(ci%2==1)
                cr(j);
            ci/=2;
        }
        for(j=1;j<=n;j++)
        {
            for(int jj=1;jj<=m;jj++)
            {
                mat[0][j]+=mat[jj][j];
            }
            if(mat[0][j]<0)
                {cc(j);
                mat[0][0]+=-mat[0][j];}
            else mat[0][0]+=mat[0][j];
        }

        if(maxim<mat[0][0])
            maxim=mat[0][0];
        reset();
    }
    fout<<maxim;

}