Pagini recente » Cod sursa (job #1120299) | Cod sursa (job #2514541) | Cod sursa (job #2805372) | Cod sursa (job #1204874) | Cod sursa (job #2329541)
#include <fstream>
#define len 1001
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
long long N, M, sol[len], mat[len][len], smax;
long long sum()
{
long long s = 0;
for(long long i = 1; i <= N; ++i)
for(long long j = 1; j <= M; ++j)
s += mat[i][j];
return s;
}
void comutare_linie(long long l)
{
for(long long i = 1; i <= M; ++i)
mat[l][i] *= -1;
}
void comutare_coloana(long long c)
{
for(long long i = 1; i <= N; ++i)
mat[i][c] *= -1;
}
void back(long long k)
{
for(long long i = sol[k - 1] + 1; i <= N + M; ++i)
{
sol[k] = i;
for(long long i = 1; i <= k; ++i)
if(sol[i] <= N)
comutare_linie(sol[i]);
else comutare_coloana(sol[i] - N);
smax = max(smax, sum());
if(k < N + M)
back(k + 1);
}
}
int main()
{
in >> N >> M;
for(long long i = 1; i <= N; ++i)
for(long long j = 1; j <= M; ++j)
{
in >> mat[i][j];
smax += mat[i][j];
}
back(1);
out << smax;
return 0;
}