Cod sursa(job #1733064)

Utilizator rares00Foica Rares rares00 Data 23 iulie 2016 15:52:11
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("flip.in");
ofstream out("flip.out");
int n,m,mat[18][18];

void afis()
{
    for(int i=1;i<=n;++i)
    {
        for(int j=1;j<=m;++j)
            out<<mat[i][j]<<" ";
        out<<"\n";
    }
    out<<"\n";
}
int main()
{
    //citiri
    in>>n>>m;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            in>>mat[i][j];
    ///afis();

    //brute force
    int ok,sP,sN,i,j;
    do{

        ok=0;
        for(int i=1;i<=n;++i)
        {
            sP=0,sN=0;
            for(int j=1;j<=m;++j)
            {
                if(mat[i][j])
                    sP+=mat[i][j];
                else
                    sN+=mat[i][j]*(-1);
            }
            if(sN>sP)
            {
                ok=1;
                for(int j=1;j<=m;++j)
                    mat[i][j]*=-1;
            }
        }


        for(int j=1;j<=m;++j)
        {
            sP=0,sN=0;
            for(int i=1;i<=n;++i)
            {
                if(mat[i][j])
                    sP+=mat[i][j];
                else
                    sN+=mat[i][j]*(-1);
            }
            if(sN>sP)
            {
                ok=1;
                for(int i=1;i<=n;++i)
                    mat[i][j]*=-1;
            }
        }

    }while(ok==1);

    ///afis();
    //calculeaza suma
    int s=0;
    for(int i=1;i<=n;++i)
        for(int j=1;j<=m;++j)
            s+=mat[i][j];
    out<<s<<"\n";

    return 0;
}