Cod sursa(job #955069)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 30 mai 2013 20:31:51
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <string.h>
#include <algorithm>

using namespace std;

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

#define Dmax 17
#define Minim -256000001
int n,m,a[Dmax][Dmax],k,move[2*Dmax],st[2*Dmax];
long long S;
char viz[2*Dmax];

void init()
{
    f>>n>>m;
    for(short i=1;i<=n;i++)
        for(short j=1;j<=m;j++) f>>a[i][j];
    k=n+m;

}

void solve(int st[2*Dmax])
{

    for(int l=1;l<=n;l++)
        if(st[l]==1)for(int j=1;j<=m;j++)a[l][j]*=(-1);
    for(int c=n+1;c<=n+m;c++)
        if(st[c]==1)for(int i=1;i<=n;i++)a[i][c]*=(-1);
    long long s=0;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++) s+=a[i][j];
    S=max(S,s);

}

void back(int varf)
{
    if(varf!=k+1)
    {
         st[varf]=0; back(varf+1);
         st[varf]=1; back(varf+1);
    }
    else
    {
       // for(short i=1;i<=k;i++) g<<st[i]<<" ";
       // g<<'\n';
        solve(st);
    }
}

int main()
{
    init();
    memset(viz,0,k);
    S=Minim;
    back(1);
    g<<S<<'\n';
    f.close();g.close();
    return 0;
}