Cod sursa(job #1351044)

Utilizator GosulyGosuly Robert Gosuly Data 21 februarie 2015 09:38:17
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.37 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("flip.in");
ofstream out ("flip.out");

int V[17][17]={0},n,m,mx=0;
int megeri(int k)
{
    int a=0;
    for(int i=1;i<=n;i++)
        a+=V[k][i];
    if(a<0)
        return 1;
    else
        return 0;
}
int sum()
{
    int t=0;
    for (int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            t+=V[i][j];
    mx=max(mx,t);
}
void read()
{
    in>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            in>>V[i][j];
}
void flip_row(int t)
{

    for(int i=1;i<=m;i++)
        V[t][i]*=-1;

}
void flip_col(int t)
{
    for( int i=1;i<=n;i++)
        V[i][t]*=-1;

}
void combrow(int k,int a)
{
    if(a<=k)
    {
        for(int j=1;j<=n;j++)
            if(megeri(j)==1)
        {
            flip_row(j);
            combrow(k,a+1);
            flip_row(j);

        }
        else

            combrow(k,a+1);

    }
    else
    {
        sum();

    }

}
void combcol(int k,int a,int j)
{
    if(a<=k)
    {
        for(int i=j;i<=m;i++)
        {

            flip_col(i);
            combcol(k,a+1,i);
            flip_col(i);

        }

    }
    else
    {

            combrow(n,1);


    }

}

int main()
{
    read();

    for(int i=0;i<=m;i++)
        combcol(i,1,1);

    out<<mx;



}