Cod sursa(job #1460758)

Utilizator om6gaLungu Adrian om6ga Data 13 iulie 2015 20:27:30
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>
#include <stdlib.h>

FILE *in,*out;
int m, n, i, j, k, aux;
int a[18][18], s_line[18], aux_line[18];
long long sum, sum_aux, sum_in;


 
int main()
{
    in=fopen("flip.in","r");
    out=fopen("flip.out","w");
    fscanf(in,"%d %d",&n,&m); 

    for (i = 1; i <= n; i++)
    {
        for (j = 1; j <= m; j++) 
        {
            fscanf(in,"%d",&a[i][j]);
            s_line[i] += a[i][j];
            sum_in += a[i][j];
        }
    }

    for (k = 1; k < (1 << m); k++)
    {
        sum_aux = 0;
        memcpy(aux_line, s_line, 18*sizeof(int));

        for (j = 1; j <= m; j++)
        {
            if ((1 << (j-1)) & k) //flip coloana j
            {
                for (i = 1; i <= n; i++)
                {
                    aux_line[i] -= (2*a[i][j]);
                }
            }
        }
        for (i = 1; i <= n; i++)
        {        
            if (aux_line[i] < 0)
            {
                aux_line[i] *= -1; //flip linia i
            }
            sum_aux += aux_line[i];
        }
        if (sum_aux > sum)
            sum = sum_aux;
    }

    
    fprintf(out,"%lld",sum);
    fclose(in);
    fclose(out);
    return 0;
}