Cod sursa(job #2501566)

Utilizator bucilamihai.iWNLMihai Cristian bucilamihai.iWNL Data 29 noiembrie 2019 21:16:53
Problema Jocul Flip Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.47 kb
#include<iostream>
#include<fstream>
using namespace std;

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

int verif_linie(int a[17][17],int m,int i)
{
    int sp=0,sn=0;
    for(int j=0;j<m;j++)
    {
        if(a[i][j]>0)
            sp=sp+a[i][j];
        else
            sn=sn+a[i][j];
    }
    if(sp>=-sn)
        return 1;
    else
        return 0;
}

void comutare_linie(int a[17][17],int m,int i)
{
    for(int j=0;j<m;j++)
        a[i][j]=-a[i][j];
}

int verif_coloana(int a[17][17],int n,int j)
{
    int sp=0,sn=0;
    for(int i=0;i<n;i++)
    {
        if(a[i][j]>0)
            sp=sp+a[i][j];
        else
            sn=sn+a[i][j];
    }
    if(sp>=-sn)
        return 1;
    else
        return 0;
}

void comutare_coloana(int a[17][17],int n,int j)
{
    for(int i=0;i<n;i++)
        a[i][j]=-a[i][j];
}

int main()
{
    int a[17][17],n,m,s=0;
    fin>>n>>m;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            fin>>a[i][j];
    for(int i=0;i<n;i++)
    {
        a[i][m]=verif_linie(a,m,i);
    }
    for(int j=0;j<m;j++)
    {
        a[n][j]=verif_coloana(a,n,j);
    }
    for(int i=0;i<n;i++)
        if(a[i][m]==0)
            comutare_linie(a,m,i);
    for(int j=0;j<m;j++)
        if(a[n][j]==0)
            comutare_coloana(a,n,j);
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            s=s+a[i][j];
    fout<<s;
    fin.close();
    fout.close();
    return 0;

}