Cod sursa(job #2192853)

Utilizator Mr.IonutMuntean Ionut Mr.Ionut Data 7 aprilie 2018 15:41:26
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.48 kb
#include <fstream>

using namespace std;

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

#define dmax 25
int mat[dmax][dmax];
int slin[dmax],scol[dmax]; /// VECTORI IN CARE RETIN SUMA DE PE FIECARE LINIE, COLOANA

int s_m(int n, int m, int mat[][dmax])      ///SUMA MATRICE
{
    long long S=0;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            S=S+mat[i][j];
    return S;
}

void afis_mat(int n, int m, int mat[][dmax])
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            fout<<mat[i][j]<<" ";
        }
        fout<<endl;
    }
    ///fout<endl;
}

void afis_v(int vec[], int dv)
{
    int i;
    for(i=0;i<dv;i++)
        fout<<vec[i]<<" ";
    fout<<endl;
}

void suma_col(int n,int m, int mat[][dmax], int scol[]) ///vectorii nu se mai dau prin referinta
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
        scol[j]=scol[j]+mat[i][j];
        fout<<"scol["<<j<<"]="<<scol[j]<<" ";
        }
        fout<<endl;
    }
}

int main()
{
    int n,m,i,j;

    fin>>n>>m;

    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
            fin>>mat[i][j];
            scol[j]=scol[j]+mat[i][j];
            slin[i]=slin[i]+mat[i][j];
        }
    //fout<<"slin= "; afis_v(slin,n);
    //fout<<"scol= "; afis_v(scol,m);
    //fout<<endl;

     /*fout<<endl<<endl;
    fout<<"PROBA:"<<endl;
    suma_col(n,m,mat,scol); fout<<endl;
    fout<<" suma pe coloane="<<endl;
    for(i=0;i<m;i++) fout<<scol[i]<<" ";
    fout<<endl<<endl;*/

    long long S=0, Smax=0; ///sau s_m(n,m,mat)  dar il prinde mai bine asa cu 0 !
    /*///////////////////////////////////////////*/ //afis_mat(n,m,mat); //fout<<"NESCHIMBATE:"<<s_m(n,m,mat)<<endl<<endl;
    for(i=0;i<n;i++)
        if(slin[i]<0)
        {
            int k=i;
            for(j=0;j<m;j++)
                mat[k][j]=mat[k][j]*(-1);
        }

    S=s_m(n,m,mat);
    if(S>Smax) Smax=S;
    /*///////////////////////////////////////////*/ //afis_mat(n,m,mat); fout<<"schimbate de linii:"<<s_m(n,m,mat)<<endl<<endl;
    for(int j=0;j<m;j++)
        if(scol[j]<0)
        {
            int k=j;
            for(int i=0;i<n;i++)
                mat[i][k]=mat[i][k]*(-1);
        }
    S=s_m(n,m,mat);
    if(S>Smax) Smax=S;
    /*///////////////////////////////////////////*/ //afis_mat(n,m,mat); //fout<<"schimbate de coloane:"<<s_m(n,m,mat)<<endl<<endl;

    fout<<Smax;

    return 0;
}