Cod sursa(job #1424032)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 23 aprilie 2015 11:40:41
Problema Jocul Flip Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>

#define MAX_N 16

int a[MAX_N][MAX_N];

int main(void) {
  FILE *f;
  unsigned n, m;
  unsigned maxSum;

  f = fopen("flip.in", "r");
  fscanf(f, "%u%u", &n, &m);
  for (unsigned i = 0; i < n; i++) {
    for (unsigned j = 0; j < m; j++) {
      fscanf(f, "%d", &a[i][j]);
    }
  }
  fclose(f);

  maxSum = 0;
  for (int back = (1 << m) - 1; back >= 0; back--) {
    unsigned sumPattern = 0;
    for (unsigned i = 0; i < n; i++) {
      int sum = 0;
      for (unsigned j = 0; j < m; j++) {
        if (back & (1 << j)) {
          sum += a[i][j];
        } else {
          sum -= a[i][j];
        }
      }
      (sum >= 0) ? sumPattern += sum : sumPattern -= sum; // schimb semnul liniei in cazul in care este negativa
    }
    if (sumPattern > maxSum) {
      maxSum = sumPattern;
    }
  }

  f = fopen("flip.out", "w");
  fprintf(f, "%u\n", maxSum);
  fclose(f);
  return 0;
}