Cod sursa(job #2471165)

Utilizator stormy_weatherelena cristina stormy_weather Data 10 octombrie 2019 15:15:45
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;

const int minValue = -1000 * 1000;

int get_sum(vector<vector <int>> &a) {
  int sum = 0;
  for (int i = 0; i < (int)a.size(); i++) {
    int cur_sum = 0;
    for (int j = 0; j < (int)a[i].size(); j++)
      cur_sum += a[i][j];
    cur_sum = max(cur_sum, -1 * cur_sum);
    sum += cur_sum;
  }
  return sum;
}

void modify_columns(int pos, int n, int m, vector<vector <int>> &a, int &max_sum) {
  if (pos == m) {
    int sum = get_sum(a);
    if (sum > max_sum)
      max_sum = sum;
    return;
  }
  modify_columns(pos + 1, n, m, a, max_sum);
  for (int i = 0; i < n; i++) {
    a[i][pos] = -1 * a[i][pos];
  }
  modify_columns(pos + 1, n, m, a, max_sum);
  return;
}

int main() {

  #ifdef INFOARENA
  ifstream cin("flip.in");
  ofstream cout("flip.out");
  #endif

  int n, m; cin >> n >> m;

  vector<vector <int>> a(n, vector<int>(m));
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++)
      cin >> a[i][j];

  int max_sum = 256 * minValue;

  modify_columns(0, n, m, a, max_sum);
  cout << max_sum << "\n";
  return 1;
}