Pagini recente » Cod sursa (job #1838879) | Cod sursa (job #921666) | Cod sursa (job #1525514) | Cod sursa (job #10981) | Cod sursa (job #2477550)
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
int M, N, A[20][20], B[20][20], pow2N;
long long maxi;
void flip(int x)
{
int i, j, flipper;
for(i = 0; i < N; i++)
{
if((1<<i) & x) flipper = -1;
else flipper = 1;
for(j = 1; j <= M; j++)
B[i + 1][j] = A[i + 1][j]*flipper;
}
}
int bestValCrt()
{
int i, j;
long long sum = 0, sumCol;
for(j = 1; j <= M; j++)
{
sumCol = 0;
for(i = 1; i <= N; i++)
sumCol += B[i][j];
if(sumCol < 0) sum -= sumCol;
else sum += sumCol;
}
return sum;
}
int main()
{
int i, j;
long long sum;
fin >> N >> M;
for(i = 1; i <= N; i++) for(j = 1; j<= M; j++)
fin >> A[i][j], maxi += A[i][j];
pow2N = 1;
for(i = 1; i <= N; i++) pow2N *= 2;
for(i = 1; i < pow2N; i++)
{
flip(i);
sum = bestValCrt();
if(sum > maxi) maxi = sum;
}
fout << maxi;
return 0;
}