Cod sursa(job #3004556)

Utilizator tudor_costinCostin Tudor tudor_costin Data 16 martie 2023 13:35:28
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <climits>
#include <vector>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int sol,n,m,a[20][20];
vector<int> coloane;
void flip(int col)
{
    for(int i=1;i<=n;i++)
    {
        a[i][col]*=-1;
    }
}
void backtracking(int col)
{
    if(col==m+1)
    {
        int total=0;
        for(int i=0;i<coloane.size();i++)
        {
            flip(coloane[i]);
        }
        for(int i=1;i<=n;i++)
        {
            int sumlin=0;
            for(int j=1;j<=m;j++)
            {
                sumlin+=a[i][j];
            }
            total=total+abs(sumlin);
        }
        sol=max(sol,total);
        for(int i=0;i<coloane.size();i++)
        {
            flip(coloane[i]);
        }
        return;
    }
    backtracking(col+1);
    coloane.push_back(col);
    backtracking(col+1);
    coloane.pop_back();
    return;
}
int main()
{
    fin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            fin>>a[i][j];
        }
    }
    backtracking(1);
    fout<<sol;
    return 0;
}