Cod sursa(job #2559602)

Utilizator Florinos123Gaina Florin Florinos123 Data 27 februarie 2020 14:03:49
Problema Jocul Flip Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <fstream>

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 (int n, int m)
{
  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 (j=1; j<=m; j++)
   {
       invertcol(j);
       marcheazacol(j, 1);

        for (i=1; i<=n; i++)
        {
            invertlin(i);

            suma = getsuma(n, m);
            maxim = max(maxim, suma);

            invertlin(i);
            marcheazalin(i, 0);
        }

       invertcol(j);
       marcheazacol(j, 0);
   }
  g << maxim;
}

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