Cod sursa(job #1712622)

Utilizator andreiSevastreAndrei Sevastre andreiSevastre Data 3 iunie 2016 10:10:43
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <stdlib.h>
#include <stdio.h>

using namespace std;

int n,r[6],a[17][17],m, suma,p;

void binar (int a)
{
	p=1;
	while(a)
	{
		r[p]=a%2;
		a=a/2;
		p++;
	}
}

int putere (int a,int n)
{
	int i;
	int p=1;
	for(i=1;i<=n;i++)
	{
			p=p*a;
	}
	return p;
}	

void flip (int i)
{ 
	for(int j=1;j<=m;j++)
	{
		a[i][j]*=-1;
	}
}
void sumaMatrice (int a[17][17])
{
	suma=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			suma+=a[i][j];
		}
	}
	
}
int main ()
{
	int max=0;
	freopen ("flip.in", "r", stdin);
	freopen ("flip.out", "w", stdout);
	
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin>>a[i][j];
		}
	}
	int q;
	q=putere(2,n);
	
	
	for(int i=1;i<=q;i++)
	{ 
		binar(i);
		for(int j=n;j>=1;j--)
		{   
			if(r[j])
			{
				flip(j);
			}
		}
		sumaMatrice(a);
		if(suma > max)
		{
			max = suma;
		}
		for(int j=n;j>=1;j--)
		{   
			if(r[j])
			{
				flip(j);
			}
		}
	}
	
	cout<<max<<endl;

	
	return 0;
}