Cod sursa(job #3198557)

Utilizator TrifoitaBejenescu-Babusanu Stefan Trifoita Data 29 ianuarie 2024 19:30:23
Problema Jocul Flip Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
#include <bits/stdc++.h>
#define _ ios::sync_with_stdio(0); cin.tie(0);
using namespace std;

ifstream fin("flip.in");
ofstream fout("flip.out");

void greedy(int table[][17], int &n, int &m) {
  int sumMax = 0;

  for (int i = 1; i <= n; i++) {
    int sumPos = 0, sumNeg = 0;
    for (int j = 1; j <= m; j++)
      if (table[i][j] > 0) sumPos += table[i][j];
      else sumNeg += abs(table[i][j]);
    if (max(sumPos, sumNeg) == sumNeg) {
      for (int j = 1; j <= m; j++)
        table[i][j] = table[i][j] * (-1);
    }
  }

  for (int j = 1; j <= m; j++) {
    int sumPos = 0, sumNeg = 0;
    for (int i = 1; i <= n; i++)
      if (table[i][j] > 0) sumPos += table[i][j];
      else sumNeg += abs(table[i][j]);
    if (max(sumPos, sumNeg) == sumNeg) {
      for (int i = 1; i <= n; i++)
        table[i][j] = table[i][j] * (-1);
    }
  }

  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= m; j++)
      sumMax += table[i][j];

  fout << sumMax;
}

int main() {
  int n,m; fin >> n >> m;
  int table[17][17];
  for (int i = 1; i < n+1; i++)
    for (int j = 1; j < m+1; j++)
      fin >> table[i][j];

  greedy(table, n, m);
  return 0;
}