Cod sursa(job #2553909)

Utilizator mariuscomoMarius Iulian Comorasu mariuscomo Data 22 februarie 2020 13:08:55
Problema Jocul Flip Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.41 kb
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int i, j, a[17][17], n, m;
int sumamatrice(int n, int m, int a[17][17])
{int s = 0, i, j;
for(i = 1; i <= n; i++)
    for(j = 1; j <= m; j++)
        s = s + a[i][j];
return s;
}

bool sumalinie(int i, int m, int a[17][17])
{int s = 0;
for(int j = 1; j <= m; j ++)
    s = s + a[i][j];
if(s >= 0)
    return true;
else
    return false;
}

bool sumacoloana(int j, int n, int a[17][17])
{int s = 0;
for(int i = 1; i <= n; i ++)
    s = s + a[i][j];
if(s >= 0)
    return true;
else
    return false;
}

void fliplinie(int i)
{for(j = 1; j <= m; j++)
    a[i][j] *= (-1);
}

void flipcoloana(int j)
{for (i = 1; i <= n; i++)
    a[i][j] *= (-1);
}

void afisare()
{for(i = 1; i <= n; i++)
    {for(j = 1; j <= m; j++)
        g << a[i][j]<<' ';
    g << endl;
    }
}

int main()
{f >> n >> m;
for(i = 1; i <= n; i++)
    for(j = 1; j <= m; j++)
        f >> a[i][j];
bool ok = 1;
while(ok)
   {ok = 0;
    for(i = 1; i <= n; i++)
        if(!sumalinie(i, m, a))
        {fliplinie(i);
        //g << "flip la linia " << i << endl;
        ok = 1;
        }

    for(j = 1; j <= m; j++)
        if(!sumacoloana(j, n, a))
            {flipcoloana(j);
            //g << "flip la coloana " << j << endl;
            ok = 1;
            }
   }
g << sumamatrice(n, m, a);
    return 0;
}