Cod sursa(job #1784538)

Utilizator raduamaistroaieRadu Amaistroaie raduamaistroaie Data 20 octombrie 2016 10:28:45
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.92 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream intrare("flip.in");
ofstream iesire("flip.out");
int n, m, a[18][18], liniep[17], coloanap[17], linien[17], coloanan[17], suma;
void citire(int &n, int &m, int a[18][18])
{
    intrare>>n>>m;
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
        {
            intrare>>a[i][j];
            if(a[i][j]>=0)
            {
                liniep[i]+=a[i][j];
                coloanap[j]+=a[i][j];
            }
            else
            {
                linien[i]-=a[i][j];
                coloanan[j]-=a[i][j];
            }
        }
}
void fliplinie(int i)
{
    for(int j=1; j<=m; j++)
    {
        if(a[i][j]>0)
        {
            coloanap[j]-=a[i][j];
            coloanan[j]+=a[i][j];
        }
        else
        {
            coloanan[j]+=a[i][j];
            coloanap[j]-=a[i][j];
        }
        a[i][j]=-a[i][j];
    }
}
void flipcoloana(int j)
{
    for(int i=1; i<=n; i++)
    {
        if(a[i][j]>0)
        {
            liniep[i]-=a[i][j];
            linien[i]+=a[i][j];
        }
        else
        {
            linien[i]-=a[i][j];
            liniep[i]+=a[i][j];
        }
        a[i][j]=-a[i][j];
    }
}
int main()
{
    citire(n,m,a);
    for(int i=1; i<=n; i++)
    {
        if(max(liniep[i],linien[i])==linien[i])
        {
            int aux;
            aux=liniep[i];
            liniep[i]=linien[i];
            linien[i]=aux;
            fliplinie(i);
        }
    }
    for(int j=1; j<=m; j++)
    {
        if(max(coloanap[j],coloanan[j])==coloanan[j])
        {
            int aux;
            aux=coloanap[j];
            coloanap[j]=coloanan[j];
            coloanan[j]=aux;
            flipcoloana(j);
        }
    }
    for(int i=1; i<=n; i++)
        for(int j=1; j<=m; j++)
            suma+=a[i][j];
    iesire<<suma;
    return 0;
}