Cod sursa(job #1744144)

Utilizator VladG26Ene Vlad-Mihai VladG26 Data 19 august 2016 13:11:41
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <iostream>
#include <cstdio>
using namespace std;
int smax,m,n,a[1000][1000],sumaPeColoane[100];

void citire()
{
    scanf("%d %d\n",&n,&m);
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=m; j++)
        scanf("%d",&a[i][j]);
        scanf("\n");
    }
}

void determinareMaxim()
{
    int sumaP=0;
    for(int itC=1; itC<=m; itC++)
        if(sumaPeColoane[itC]<0)
            sumaP-=sumaPeColoane[itC];
        else
            sumaP+=sumaPeColoane[itC];

    if(sumaP>smax) smax=sumaP;
}

void submultimiElegant()
{
    for(int i=1; i<(1<<n); i++)
    {
        for(int itC=1;itC<=m;itC++)
            sumaPeColoane[itC]=0;

        for(int j=1; j<=n; j++)

            for(int itC=1; itC<=m; itC++)
            {
                if(i&(1<<j-1))
                    sumaPeColoane[itC]-=a[j][itC];

                else
                    sumaPeColoane[itC]+=a[j][itC];
            }
        determinareMaxim();
    }
}


int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    citire();
    submultimiElegant();
    printf("%d",smax);

    return 0;
}