Cod sursa(job #3136675)

Utilizator Ruxandra009Ruxandra Vasilescu Ruxandra009 Data 7 iunie 2023 17:58:16
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("flip.in");
ofstream g("flip.out");

int n, m, A[20][20], sol[20], fr[20], maxi, sumilin[20], sumicol[20];

void verif(int k)
{
    int sumi = 0;

    for(int i = 1; i <= k; i ++)
        for(int j = 1; j <= m; j ++)
            sumicol[j] += 2 * A[sol[i]][j] * (-1);

    for(int i = 1; i <= m; i ++)
        sumi += abs(sumicol[i]);

    for(int i = 1; i <= k; i ++)
        for(int j = 1; j <= m; j ++)
            sumicol[j] -= 2 * A[sol[i]][j] * (-1);

    if(sumi > maxi)
        maxi = sumi;
}

void comb1(int K)
{
    if(K <= n)
    {
        if(K == 1)verif(K);

        for(int i = sol[K - 1] + 1; i <= n; i ++)
            if(!fr[i]){
                fr[i] = 1;
                sol[K] = i;
                verif(K);
                comb1(K + 1);
                fr[i] = 0;
            }
    }
}

int main()
{
    f >> n >> m;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
        {
            f >> A[i][j];
            maxi += A[i][j];
            sumicol[j] += A[i][j];
            sumilin[i] += A[i][j];
        }

    comb1(1);
    g << maxi;
    return 0;
}