Cod sursa(job #2292920)

Utilizator sabinpocrisSabin P sabinpocris Data 30 noiembrie 2018 11:25:24
Problema Jocul Flip Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <bits/stdc++.h>
using namespace std;

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

vector<vector<int>> matrix(16, vector<int>(16));

int calculateSum(vector<vector<int>> matrix){
  int sum = 0;
  for (vector<int> v: matrix){
    for (int item : v)
      sum += item;
  }

  return sum;
}

int calculateVect(vector<int> vect){
  int sum = 0;
  for (int item : vect){
    sum += item;
  }

  return sum;
}

int main(){
  int n, m, max_sum = 0, tempSum = 0;
  vector<vector<int>> temp;
  in >> n >> m;
  
  for (int i = 0; i < n; i++){
    for (int j = 0; j < m; j++){
      in >> matrix[i][j];
    }
  }

  max_sum = calculateSum(matrix);
  temp = matrix;
  
  for (int i = 0; i < n; i++){
    vector<int> of;
    for (int j = 0; j < m; j++){
      of.push_back(temp[i][j]);
    }
    
    tempSum = calculateVect(of);
    if ((tempSum * -1) > tempSum){
      for (int j = 0; j < m; j++){
	if(temp[i][j] == matrix[i][j])
	  temp[i][j] *= -1;
      } 
    }
  }

  for (int i = 0; i < m; i++){
    vector<int> of;
    for (int j = 0; j < n; j++){
      of.push_back(temp[j][i]);
    }
    
    tempSum = calculateVect(of);
    if ((tempSum * -1) > tempSum){
      for (int j = 0; j < n; j++){
	if(temp[j][i] == matrix[j][i])
	  temp[j][i] *= -1;
      } 
    }
  }
  
  out << max(max_sum, calculateSum(temp)) << endl;
  
  return 0;
}