Cod sursa(job #191524)

Utilizator cata00Catalin Francu cata00 Data 27 mai 2008 02:23:59
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

int a[100][100];
int m, n;
int sign[100];
int sum;

void readData(void) {
  FILE *f = fopen("flip.in", "rt");
  fscanf(f, "%d %d", &m, &n);
  for (int i = 0; i < m; i++) {
    for (int j = 0; j < n; j++) {
      fscanf(f, "%d", &a[i][j]);
    }
  }
  fclose(f);
}

void writeData(void) {
  FILE *f = fopen("flip.out", "wt");
  fprintf(f, "%d\n", sum);
  fclose(f);
}

void flip() {
  sum = 0;
  for (int binary = 0; binary < (1 << n); binary++) {
    int comboSum = 0;
    for (int i = 0; i < m; i++) {
      int rowSum = 0;
      for (int j = 0; j < n; j++) {
	rowSum += a[i][j] * ((binary & (1 << j)) ? -1 : 1);
      }
      comboSum += (rowSum > 0) ? rowSum : -rowSum;
    }
    if (comboSum > sum) {
      sum = comboSum;
    }
  }
}

int main(void) {
  readData();
  flip();
  writeData();
  return 0;
}