Cod sursa(job #1826919)

Utilizator lpsasuSasu Alexandru lpsasu Data 11 decembrie 2016 03:06:10
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int coloana[17],linie[17],tabla[17][17];
int n,m,x;

bool line(int l)
{
    int s=0;
    for(int i=1;i<=m;i++)
    {
        s+=tabla[l][i];
    }
    if(s<0)
        return true;
    return false;
}

bool col(int c)
{
    int s=0;
    for(int i=1;i<=m;i++)
    {
        s+=tabla[i][c];
    }
    if(s<0)
        return true;
    return false;
}

void reverseline(int l)
{
    for(int i=1;i<=m;i++)
        tabla[l][i]*=(-1);
}

void reversecol(int c)
{
    for(int i=1;i<=n;i++)
        tabla[i][c]*=(-1);
}

int main()
{

    in>>n>>m;
    int s=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            in>>x;
            tabla[i][j]=x;
            coloana[j]+=x;
            linie[i]+=x;
        }
    }
    bool ok=true;
    while(ok)
    {
        ok=false;
        for(int i=1;i<=n;i++)
            if(line(i))
            {
                ok=true;
                reverseline(i);
            }
        for(int j=1;j<=m;j++)
            if(col(j))
            {
                ok=true;
                reversecol(j);
            }
    }
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            s+=tabla[i][j];
    out<<s;
}