Cod sursa(job #2559586)

Utilizator Florinos123Gaina Florin Florinos123 Data 27 februarie 2020 13:47:43
Problema Jocul Flip Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.52 kb
#include <fstream>
#include <cstring>

using namespace std;

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

long long maxim;
int n, m, a[20][20];
bool used[20][20];

void read ()
{
 int i, j;
  f >> n >> m;
   for (i=1; i<=n; i++)
   {
       for (j=1; j<=m; j++)
       {
           f >> a[i][j];
           maxim += a[i][j];
       }
   }
}

void invertlin (int linie)
{
 int j;
  for (j=1; j<=m; j++)
    if (!used[linie][j])
       a[linie][j] = -a[linie][j];
}

void invertcol (int coloana)
{
 int i;
  for (i=1; i<=n; i++)
    if (!used[i][coloana])
      a[i][coloana] = -a[i][coloana];
}

void marcheazalin (int linie, int val)
{
 int j;
  for (j=1; j<=m; j++)
     used[linie][j] = val;
}

void marcheazacol (int coloana, int val)
{
  int i;
   for (i=1; i<=n; i++)
        used[i][coloana] = val;
}

long long getsuma ()
{
  long long suma = 0;
  int i, j;
   for (i=1; i<=n; i++)
   {
       for (j=1; j<=m; j++)
       {
           suma += a[i][j];
       }
   }
  return suma;
}

void solve ()
{
 int i, j;
 long long suma;
  for (i=1; i<=n; i++)
  {
      invertlin(i);
      marcheazalin(i, 1);

       for (j=1; j<=m; j++)
       {
          invertcol(j);
          marcheazacol(j, 1);
          suma = getsuma();
          maxim = max(maxim, suma);

          invertcol(j);
          marcheazacol(j, 0);
       }

       invertlin(i);
       marcheazalin(i, 0);
  }
 g << maxim;
}

int main()
{
 read();
 solve();
    return 0;
}