Cod sursa(job #2850509)

Utilizator MTAxD12Preda Andrei MTAxD12 Data 16 februarie 2022 21:19:12
Problema Jocul Flip Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 kb
#include<fstream>
using namespace std;

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

int v[50][50], test[50][50];
int n, m;
int sumaMax;

void schimbaLinia(int i, int b[50][50])
{
    for(int j = 1; j <= m; j++)
        b[i][j] = -1 * b[i][j];
}

void schimbaColoana(int j, int b[50][50])
{
    for(int i = 1; i <= n; i++)
        b[i][j] = -1 * b[i][j];
}

int suma(int v[50][50])
{
    int s = 0;
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++)
        {
            s += v[i][j];
        }
    }
    return s;
}

int main()
{
    fin>>n>>m;

    if(n < 1 || m > 16)
        return 0;



    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
        {
            fin>>v[i][j];
            sumaMax += v[i][j];
            test[i][j] = v[i][j];
        }

    for(int j = 1; j <= m; j++)
    {
        schimbaColoana(j, test);
        if(sumaMax < suma(test))
        {
            schimbaColoana(j, v);
            sumaMax = suma(v);
        }
        else
            schimbaColoana(j, test);
    }

    for(int i = 1; i <= n; i++)
    {
        schimbaLinia(i, test);
        if(sumaMax < suma(test))
        {
            schimbaLinia(i, v);
            sumaMax = suma(v);
        }
        else
            schimbaLinia(i, test);
    }


    fout<<suma(v);

    fin.close();
    fout.close();
}