Cod sursa(job #1208783)

Utilizator auRSTARHreapca Aurelian auRSTAR Data 16 iulie 2014 16:01:57
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <cstdio>
#define max(a,b) a>b?a:b
int numRow,numCol,configurations,value[20][20],sol;

void changeMatrix(int cnt)
{
    for(int i = 0; i < numCol; i++)
        if(cnt & (1 << i))
            for(int j = 0; j < numRow; j++)
                value[j][i] = -value[j][i];
}
int calculate()
{
    int ans = 0;
    for(int i = 0; i < numRow; i++)
    {
        int rowSum = 0;
        for(int j = 0; j < numCol; j++)
            rowSum = rowSum + value[i][j];
        if(rowSum < 0)
            rowSum = -rowSum;
        ans = ans + rowSum;
    }
    return ans;
}
int main()
{
    freopen("flip.in","r",stdin);
    freopen("flip.out","w",stdout);
    scanf("%d%d",&numRow,&numCol);
    for(int i = 0; i < numRow; i++)
        for(int j = 0; j < numCol; j++)
            scanf("%d",&value[i][j]);
    configurations = 1<<numCol;
    sol = 0;
    for(int current = 0; current < configurations; current++)
    {
        changeMatrix(current);
        sol = max(sol,calculate());
        changeMatrix(current);
    }
    printf("%d\n",sol);
    return 0;
}