Cod sursa(job #1986534)

Utilizator lorena1999Marginean Lorena lorena1999 Data 28 mai 2017 14:59:10
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.78 kb
#include <iostream>
#include <fstream>

using namespace std;

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

long int n, m, a[20][20];

void citire()
    {
        f>>n>>m;
        for(int i=1; i<=n; i++)
            for(int j=1; j<=m; j++)
                f>>a[i][j];
    }

void schimb(int l, int c)
    {
        if(c==0)
            for(int j=1; j<=m; j++)
                a[l][j]=-a[l][j];
        else
            for(int i=1; i<=n; i++)
                a[i][c]=-a[i][c];
    }

void prelucrare_l()
    {
        for(int i=1; i<=n; i++)
        {
            long int sp=0;
            for(int j=1; j<=m; j++)
            {
                sp=sp+a[i][j];
            }
            long int sn=0;
            for(int j=1; j<=m; j++)
            {
                long int val=-a[i][j];
                sn=sn+val;
            }
            if(sn>sp)
                {
                    //cout<<"linie:"<<i<<" ";
                    schimb(i, 0);
                }
        }
    }

void prelucrare_c()
    {
        for(int j=1; j<=m; j++)
        {
            long int sp=0;
            for(int i=1; i<=n; i++)
            {
                sp=sp+a[i][j];
            }
            long int sn=0;
            for(int i=1; i<=n; i++)
            {
                long int val=-a[i][j];
                sn=sn+val;
            }

            if(sn>sp)
                {
                    //cout<<"coloana:"<<j<<" ";
                    schimb(0, j);
                }
        }
    }

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

int main()
{
    citire();
    prelucrare_l();
    prelucrare_c();
    g<<suma();
}