Cod sursa(job #2684765)

Utilizator YusyBossFares Yusuf YusyBoss Data 14 decembrie 2020 19:44:09
Problema Jocul Flip Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <iostream>
#include <stdio.h>
#define NMAX 16

using namespace std;

int mat[NMAX + 1][NMAX + 1], v[NMAX + 1], newmat[NMAX + 1][NMAX + 1];
int n, m, sol;

void solve() {
  int sum, i, j, s;

  for (i = 1; i <= n; i++) {
    if (v[i] == 0)
      for (j = 1; j <= m; j++)
        newmat[i][j] = mat[i][j];
    else
      for (j = 1; j <= m; j++)
        newmat[i][j] = -mat[i][j];
  }

  sum = 0;
  for (i = 1; i <= m; i++) {
    s = 0;
    for (j = 1; j <= n; j++)
      s += newmat[j][i];

    if (s > 0)
      sum += s;
    else
      sum -= s;
  }
  sol = max(sol, sum);
}

void backtr(int p) {
  if (p == n + 1) {
    solve();
    return;
  }

  v[p] = 0;
  backtr(p + 1);

  v[p] = 1;
  backtr(p + 1);
}

int main() {
  FILE *fin, *fout;
  int i, j;

  fin = fopen("flip.in", "r");
  fscanf(fin, "%d%d", &n, &m);

  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++)
      fscanf(fin, "%d", &mat[i][j]);

  backtr(1);

  fout = fopen("flip.out", "w");
  fprintf(fout, "%d", sol);
  fclose( fout );
  return 0;
}