Pagini recente » Cod sursa (job #2508510) | Cod sursa (job #2262819) | Cod sursa (job #1929836) | Cod sursa (job #2986615) | Cod sursa (job #1455962)
#include <iostream>
#include <fstream>
const char IN[] = "flip.in", OUT[] = "flip.out";
const int NMAX = 16;
const int INF = 0x3f3f3f3f;
using namespace std;
int N, M;
int A[NMAX][NMAX];
int row[NMAX], col[NMAX];
int maxSum = -INF;
inline void read_data() {
freopen(IN, "r", stdin);
scanf("%d %d", &N, &M);
for (int i = 0; i < N; ++i)
for (int j = 0; j < N; ++j)
scanf("%d", &A[i][j]);
fclose(stdin);
}
int getsgn(int val, int rank) {
return (val & (0x1 << rank)) ? -1 : 1;
}
void chksum(int row, int col) {
int s = 0;
for (int i = 0; i < N; ++i)
for (int j = 0; j < N; ++j)
s += A[i][j] * getsgn(row, i) * getsgn(col, j);
if (s > maxSum) maxSum = s;
}
int main() {
read_data();
for (int rowval = 0; rowval < (1 << N); ++rowval)
for (int colval = 0; colval < (1 << N); ++colval)
chksum(rowval, colval);
fprintf(fopen(OUT, "w"), "%d\n", maxSum);
return 0;
}