Cod sursa(job #2897450)

Utilizator ptlsebiptl sebi ptlsebi Data 3 mai 2022 19:57:54
Problema Jocul Flip Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.36 kb
#include <stdio.h>
#include <stdint.h>

void read_int32_t(FILE *__restrict stream, int32_t *__restrict nr) {
  uint8_t ch;
  int8_t sgn = 1;
  *nr = 0;
  ch = fgetc(stream);
  if (ch == '-') {
    sgn = -1;
  } else if (('0' <= ch && ch <= '9')) {
    *nr = ch - '0';
  } else {
    return;
  }
  while ((ch = fgetc(stream)) && ('0' <= ch && ch <= '9')) {
    *nr *= 10;
    *nr += ch - '0';
  }
  if (ch == '\r') {
    fgetc(stream);
  }
  *nr *= sgn;
}
int32_t __inline__ __attribute((pure)) max(int32_t o1, int32_t o2) {
  return o1 > o2 ? o1 : o2;
}

int32_t n, m;
int32_t a[17][17];
int32_t msum = 0;

void check(int32_t x) {
  int32_t i, j;
  int32_t clsum = 0;
  int32_t csum = 0;
  
  for (i = 0; i < m; ++i) {
    clsum = 0;
    for (j = 0; j < n; ++j) {
      clsum += (x & (1<<j)) ? a[j][i] : -a[j][i];
    }
    csum += max(clsum, -clsum);
  }
  msum = max(csum, msum);
}

int main(void) {
  {
    FILE *__restrict in = fopen("flip.in", "r");
  
    read_int32_t(in, &n);
    read_int32_t(in, &m);
    {
      int32_t i, j;
      for (i = 0; i < n; ++i) {
        for (j = 0; j < m; ++j) {
          read_int32_t(in, a[i] + j);
        }
      }
    }
  
    fclose(in);
  }

  {
    int32_t i;
    for(i = 0; i < (1<<n); ++i) {
      check(i);
    }
  }


  {
    FILE *__restrict out = fopen("flip.out", "w");

    fprintf(out, "%i\n", msum);
  
    fclose(out);
  }

  return 0;
}