Cod sursa(job #1351049)

Utilizator GosulyGosuly Robert Gosuly Data 21 februarie 2015 09:47:24
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.33 kb
#include <iostream>
#include <fstream>

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

int V[17][17]={0},n,m,mx=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=std::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];
}
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;
}
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)
    {

        if(megeri(a)==1)
        {
            flip_row(a);
            combrow(k,a+1);


        }

        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);


        }

    }
    else
    {
            sum();
            combrow(n,1);

    }

}

int main()
{
    read();

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

    out<<mx;



}