Cod sursa(job #1009759)

Utilizator vladm97Matei Vlad vladm97 Data 13 octombrie 2013 19:47:24
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in("flip.in");
ofstream out("flip.out");
int x[22];
int caz=0;
int matrix[19][19];
int n,m,s=0;
long long sMax = 1<<31;
void read()
{
    in>>n>>m;
    for(int i=1; i<=n ; i++)
    {
        for(int j=1 ; j<=m ; j++)
        {
            in>>matrix[i][j];
        }
    }
}


void set1(int line)
{
    for(int i = 1 ; i<=m ; i++)
    {
        matrix[line][i]*=(-1);
    }
}

void set2(int column)
{
    for(int i=1 ; i<=n ; i++)
    {
        matrix[i][column]*=(-1);
    }
}

int sum()
{
    int s=0;
    for(int i=1; i<=n ; i++)
    {
        for(int j=1 ; j<=m ; j++)
        {
            s+=matrix[i][j];
        }
    }
    return s;
}
void bkt(int k)
{
    if(k==n+1)
    {
        int s=sum();
        if(s>sMax)
        {
            sMax = s;
        }
    }
    else
    {
        int s0;
        for(int i=1 ; i<= 3 ; i++)
        {
            if(i==1)
            {
                bkt(k+1);
            }
            if(i==2)
            {
                set1(k);
                bkt(k+1);
                set1(k);
            }
            if(i==3)
            {
                set2(k);
                bkt(k+1);
                set2(k);
            }
        }
    }
}

void write()
{
    out<<sMax;
}
int main()
{
    read();
    bkt(1);
    write();
}