Pagini recente » Istoria paginii utilizator/utcn_soucup_arama_leucuta | Istoria paginii runda/should_be_easy | Cod sursa (job #97789) | Istoria paginii utilizator/trifoita | Cod sursa (job #2015091)
#include <iostream>
#include <fstream>
using namespace std;
int n, m, i, j, v[18][18], b[18][18], x[35], k;
long long c, rez;
long long suma ()
{
for (int i = 1; i <= k; i++)
{
for (int j = 1; j <= m; j++)
b[x[i]][j] *= -1;
}
long long sum = 0;
long long c = 0;
for (j = 1; j <= m; j++)
{
c = 0;
for (i = 1; i <= n; i++)
{ c += b[i][j]; b[i][j] = v[i][j]; }
if (c > 0) sum += c;
else sum -= c;
}
return sum;
}
void back (int p)
{
long long c;
for (int i = x[p-1] + 1; i <= n; i++)
{
x[p] = i;
if (p == k)
{
c = suma();
if (c > rez) rez = c;
}
else back(p + 1);
}
}
int main () {
ifstream fin("flip.in");
ofstream fout("flip.out");
fin >> n >> m;
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
{
fin >> v[i][j];
b[i][j] = v[i][j];
rez += v[i][j];
}
for (k = 1; k <= n; k++)
back(1);
fout << rez << "\n";
return 0;
}