Cod sursa(job #1455962)

Utilizator GilgodRobert B Gilgod Data 29 iunie 2015 15:52:32
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#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;
}