Pagini recente » Cod sursa (job #2894743) | Cod sursa (job #1605933) | Cod sursa (job #68639) | Cod sursa (job #2212074) | Cod sursa (job #3210214)
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int v[20][20], n = 1, m = 1, tot, sum_max, S = 0, Sc;
int op[40];
void Back(int k)
{
if(k == tot + 1)
{
Sc = 0;
for(int i = 1; i <= n; i ++)
{
for(int j = 1; j <= m; j ++)
{
Sc = Sc + (op[i] * op[n + j] * v[i][j]);
//cout << Sc << " i: " << i << " j: " << j << "\n";
}
}
//cout << "==============\n";
if(Sc > sum_max)
{
sum_max = Sc;
}
/*
for(int p = 1; p <= n; p ++)
{
Sc = Sc + (op[p] * v[p][0]);
if(op[p] == -1)
{
Sc = Sc + 12 * (op[p] * v[p][0]);
}
}
for(int p = n + 1; p <= tot; p ++)
{
Sc = Sc + (op[p] * v[0][p - n]);
if(op[p] == -1)
{
Sc = Sc + 12 * (op[p] * v[p][0]);
}
}
if((op[3] == -1) && (op[7] == -1))
{
//cout << Sc << " " << sum_max << "\n";
}
if(Sc > sum_max)
{
//cout << Sc << " - " << sum_max << "\n";
sum_max = Sc;
}
*/
}
else
{
for(int i = -1; i <= 1; i += 2)
{
op[k] = i;
Back(k + 1);
}
}
}
int main()
{
int i, j;
f >> n >> m;
tot = n + m;
for(i = 1; i <= n; i ++)
{
for(j = 1; j <= m; j ++)
{
f >> v[i][j];
v[0][j] += v[i][j];
v[i][0] += v[i][j];
}
}
for(i = 1; i <= n; i ++)
{
S += v[i][0];
}
for(j = 1; j <= n; j ++)
{
S += v[0][j];
}
sum_max = S / 2;
Back(1);
/*
for(i = 1; i <= tot; i ++)
{
S = max(S, max((S - 2 * v[i][0]), max((S - 2 * v[0][j]), (S - 2 * v[i][0] - 2 * v[0][j]))));
}
S - 2 * v[i][0]
S - 2 * v[0][j]
S - 2 * v[i][0] - 2 * v[0][j]
*/
/*
cout << sum_max;
for(i = 0; i <= n; i ++)
{
for(j = 0; j <= m; j ++)
{
g << setw(3) << v[i][j] << " ";
}
g << "\n";
}
*/
g << sum_max;
return 0;
}
/*
for(int p = 1; p <= n; p ++)
{
for(int u = n + 1; u <= tot; u ++)
{
if()
Sc = Sc + (op[p] * v[p - n][p - n]);
}
}
*/