Cod sursa(job #2115681)

Utilizator horiacoolNedelcu Horia Alexandru horiacool Data 26 ianuarie 2018 23:43:44
Problema Jocul Flip Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");

int N, M, Sum, mat[20][20], x[40], s[2]={1,-1};
/*
void afisare()
{
    int sol = 0;
    for(int i = 0 ; i < N ; i++)
        for(int j = 0 ; j < M ; j++)
            sol += x[i+1]*x[N+j+1]*mat[i][j];
    Sum = ( Sum > sol)? Sum : sol;
}

void BKT(int k)
{
    if( k == N+M+1 )
        afisare();
    else
        for(int l = 0 ; l < 2 ; l++)
    {
        x[k] = s[l];
        BKT(k+1);
        x[k] = 0;
    }
}
*/
void afisare_faster()
{
    int sol = 0;
    for(int i = 0 ; i < N ; i++)
    {
        int sol_i = 0;
        for(int j = 0 ; j < M ; j++)
            sol_i += x[j+1]*mat[i][j];
        sol += fabs(sol_i);
    }
    Sum = ( Sum > sol)? Sum : sol;
}

void BKT_faster(int k)
{
    if( k == M+1 )
        afisare_faster();
    else
        for(int l = 0 ; l < 2 ; l++)
    {
        x[k] = s[l];
        BKT_faster(k+1);
        x[k] = 0;
    }
}

int main()
{
    f >> N >> M;
    if( N < M ) swap(N,M);
    for(int i = 0 ; i < N ; i++)
        for(int j = 0 ; j < M ; j++)
            f >> mat[i][j];
    BKT_faster(1);
    g << Sum;
    return 0;
}