Pagini recente » Cod sursa (job #1653019) | Cod sursa (job #1001815) | Cod sursa (job #2891471) | Cod sursa (job #2321514) | Cod sursa (job #1856413)
#include <iostream>
#include <fstream>
using namespace std;
int n, m;
long int a[16][16];
long int mx = -16000000;
int lc[32];
long int calcSum()
{
long int s = 0;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
s+=a[i][j] * lc[i] * lc[i+j+1];
return s;
}
int factorial(int n)
{
return (n == 1 || n == 0) ? 1 : factorial(n - 1) * n;
}
void permute(int* v, int l)
{
int i = l-1;
int step = 0;
do{
if(v[i] == -1)
{
v[i] = 1;
i = l-1;
step++;
mx = max(mx, calcSum());
}
else
if(v[i] == 1)
{
v[i] = -1;
i--;
}
}while(step < l*l);
}
int main()
{
ifstream f("flip.in");
ofstream g("flip.out");
f >> n >> m;
for(int i = 0; i < n; i++)
for(int j = 0; j < m; j++)
f >> a[i][j];
for(int i = 0; i < m+n; i++)
lc[i] = -1;
permute(lc, m+n);
g << mx;
return 0;
}