Cod sursa(job #1714552)

Utilizator andreiSevastreAndrei Sevastre andreiSevastre Data 8 iunie 2016 17:47:06
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
 
using namespace std;
 
int n,r[17],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;
	int aux;
    for(int i=1;i<=m;i++)
    {
		aux = 0;
        for(int j=1;j<=n;j++)
        {
            aux+=A[j][i];
        }
		if (aux < 0) aux *= -1;
		suma += aux;
    }
     
}
int main ()
{
    int max=0, min = 100000;
    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);
	q = 1 << n;
     
     
    for(int i=0;i<q;i++)
    { 
        binar(i);
        for(int j=1;j<=p;j++)
        {   
            if(r[j])
            {
                flip(j);
            }
        }
        sumaMatrice(a);
        if(suma > max)
        {
            max = suma;
		}
		if (suma < min)
		{
			min = suma;
		}
        for(int j=1;j<=p;j++)
        {   
            if(r[j])
            {
                flip(j);
            }
        }
    }
     
    cout<<max<< endl;
 
     
    return 0;
}