Pagini recente » Cod sursa (job #1174254) | Cod sursa (job #964148) | Cod sursa (job #370391) | Cod sursa (job #34206) | Cod sursa (job #1310768)
#include <cstdio>
#include <iostream>
using namespace std;
const int MAX_N = 16;
int a[MAX_N][MAX_N], st[MAX_N],st2[MAX_N], n, m,sol;
int succesor(int k)
{
if(st[k]<2)
{
st[k]++;
return 1;
}
else
return 0;
}
int valid(int k)
{
return 1;
}
int solutie(int k)
{
return k==m;
}
void print(int k)
{
int suma = 0;
for(int i=1; i<=k; i++)
{
if(st[i]==2)st2[i]= 1;
else st2[i] = -1;
}
for(int i=1; i<=n; i++)
{
int s = 0;
for(int j=1; j<=m; j++)
{
s+=a[i][j]*st2[j];
}
if(s<0) suma += -s;
else suma += s;
}
if(sol < suma) sol = suma;
}
void back()
{
int k;
k=1;
st[k]=0;
while(k>0)
{
if(succesor(k))
{
if(valid(k))
if(solutie(k))
print(k);
else
{
k++;
st[k]=0;
}
}
else
k--;
}
}
int main()
{
freopen("flip.in", "r", stdin);
scanf("%d %d\n", &n, &m);
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= m; ++j)
scanf("%d", &a[i][j]);
fclose(stdin);
sol = -1e9;
back();
freopen("flip.out", "w", stdout);
printf("%d", sol);
fclose(stdout);
return 0;
}