Cod sursa(job #2120767)

Utilizator alexmuresan3Muresan Alexandru Dorian alexmuresan3 Data 2 februarie 2018 21:13:38
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#define MAX 18
#include <cmath>

using namespace std;

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

int n, m, a[MAX][MAX];

void citire()
    {
        f>>n>>m;
        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)
                f>>a[i][j];
    }

int suma(int x)
    {
        int s, rez=0; // suma totala matrice
        for(int i=1; i<=n; i++)
        {
            s=0; // suma pe o linie
            for(int j=1; j<=m; j++)
            {
                if(x&(1<<j-1)) // luam toate combinatiile posibile de semne + - + etc de m semne distincte. Pt m semne avem nevoie de m biti care sa le stocheze => generam submultimile lui m, adica 2^m
                    s+=a[i][j];
                else s-=a[i][j];
            }
            rez+=abs(s);
        }
        return rez;
    }

int main()
    {
        int rez=0;
        citire();
        for(int i=0; i<(1<<m); i++)
            rez=max(rez, suma(i));
        g<<rez;
    }