Cod sursa(job #3234252)

Utilizator ItsHezovPahonie George Alessio ItsHezov Data 8 iunie 2024 15:49:07
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
using namespace std;
ifstream cin("flip.in");
ofstream cout("flip.out");
int a[30][30];
int main()
{
    ///Citim datele.
    int n , m;
    cin>>n>>m;
    for(int i = 1;i<=n;i++)
        for(int j = 1;j<=m;j++)
            cin>>a[i][j];
    int p = (1<<m); // 2^m;
    long long sol = 0,sum = 0;
    /// in a[i][0] vom retine suma liniei i
    for(int comb = 1;comb < p; comb++)
    {
        ///Resetam sumele.
        for(int i = 1;i<=n;i++)
            a[i][0] = 0;
        sum = 0;
        ///Salvam combinatia pentru a o putea prelucra.
        int nr = comb;
        ///Parcurgem matricea *pe coloane* si inversam elementul daca e cazul.
        for(int j = 1;j <= m; j++, nr/=2)
            for(int i = 1;i<=n;i++)
            {
                if(nr%2==1) ///toata coloana va fi inversata.
                    a[i][0]-=a[i][j];
                else a[i][0]+=a[i][j]; ///Toata coloana nu-i inversata.
            }
        for(int i = 1;i<=n;i++)
            sum+=abs(a[i][0]); /// adunam valoarea absoluta.
        sol = max(sol,sum);
    }
    cout<<sol;
    return 0;
}