Cod sursa(job #864097)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 24 ianuarie 2013 17:49:18
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>

using namespace std;

ifstream fin("flip.in");
ofstream fout("flip.out");

int v[16][16];
int n,m;
int maxim,minus_linie[16],minus_coloana[16];

int semn(int i,int j)
{
	if(minus_linie[i]^minus_coloana[j]==1)
		return -1;
	return 1;
}

int suma_coloana(int coloana)
{
	int i;
	int s=0;
	for(i=0;i<n;i++)
	{
		s+=(v[i][coloana]*semn(i,coloana));
	}
	return s;
}

int abs(int a)
{
	if(a>0)
		return a;
	return ((-1)*(a));
}

void back_coloana(int poz)
{
	int suma=0,i;
	for(i=0;i<m;i++)
		suma+=abs(suma_coloana(i));
	
	if(suma>maxim)
		maxim=suma;
}

void back_linie(int poz)
{
    if(poz==n)
		back_coloana(0);
	else
	{
		back_linie(poz+1);
		
		minus_linie[poz]=1;
		back_linie(poz+1);
		minus_linie[poz]=0;
	}
}


int main()
{
	int i,j;
	fin>>n>>m;
	maxim=-256000256; //mai mult trebuie
	for(i=0;i<n;i++)
		for(j=0;j<m;j++)
			fin>>v[i][j];
		back_linie(0);
	fout<<maxim<<'\n';
	
	fin.close();
	fout.close();
	
	return 0;
}