Pagini recente » Cod sursa (job #2021318) | placinta | Cod sursa (job #222719) | Istoria paginii runda/23dezile_2 | Cod sursa (job #1714552)
#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;
}