Cod sursa(job #198181)

Utilizator crisy_girlpop cristina crisy_girl Data 9 iulie 2008 13:20:35
Problema Jocul Flip Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <stdio.h>

int N,M,AN,B[16];
long A[16][16];

int max (int a1,int a2)
{
        return a1 > a2 ? a1 : a2;
}

int sum()
{
	int s = 0;
        for(int i =  1;i <= M; ++i)
        {
                if (B[i])
                {
                        for(int j = 1;j <= N; ++j)
                                A[j][i] *= -1;
                }
        }
	for (int i=0;i<= N; ++i)
	{
                int sc = 0;
		for (int j=0; j<=M ; ++j)
			sc += A[i][j];
		if (sc < 0) sc = -sc;
                s += sc;
	}
        for(int i =  1;i <= M; ++i)
        {
                if (B[i])
                {
                        for(int j = 1;j <= N; ++j)
                                A[j][i] *= -1;
                }
        }
	return s;
}

void col(int poz)
{
	if (poz > M) AN = max(sum() , AN);
	else
	for (B[poz] = 0; B[poz]<=1; ++B[poz])
		col(poz+1);
}

int main()
{
	freopen("flip.in","r",stdin);
	freopen("flip.out","w",stdout);
	scanf("%d %d",&N, &M);
	int i,j;
	for (i = 1 ; i <= N ; ++i)
		for (j = 1 ; j <= M ; ++j)
			scanf("%d ",&A[i][j]);
	col(1);
	printf("%d\n",AN);
	return 0;
}