Cod sursa(job #2192107)

Utilizator Mr.IonutMuntean Ionut Mr.Ionut Data 4 aprilie 2018 18:43:02
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.51 kb
///FI MA ATENT SI IAU MAI PAS-CU-PAS!
///PENTRU A OBTINE O MATRICE CU SUMA MAXIMA TREBUIE SA:
///CAUTAM CELE MAI MICI NUMERE SI SA LE FACEM POZITIVE dar:
///DACA TOATE NUMERELE SUNT POZITIVE
#include <fstream>

using namespace std;

ofstream fout("flip.out");

#define dmax 17

void afisare(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;
    }
}

int mat[dmax][dmax];
int scol[dmax];

int main()
{
    int n,m,i,j,sl=0,sc=0,iC=0,jC=0,minn=1000000;



    ifstream fin("flip.in");

    fin>>n>>m;

    for(i=0;i<n;i++)
    {   sl=0;
        for(j=0;j<m;j++)
        {
            fin>>mat[i][j];
            sl=sl+mat[i][j];
            scol[j]=scol[j]+mat[i][j];          ///CAUT SUMA MINIMA PE LINII, IMPLICIT LINIA DORITA PENTRU COMUTAT +
        }                               ///RETIN INTR UN VECTOR SUMELE PE COLOANE
        if(sl<minn)
        {
            minn=sl;
            iC=i;
        }
    }
    fout<<"iC="<<iC<<endl;

    /*for(i=0;i<m;i++)
        fout<<scol[i]<<" ";
     fout<<endl;*/

    minn=1000000;
    for(i=0;i<m;i++)     ///aici i ul implementeaza coloane
        if(scol[i]<=minn)
        {
            minn=scol[i];
            jC=i;
        }
        fout<<"jC="<<jC<<endl;

    /*int dim;
    if(n>m) dim=n;
    else dim=m;
*/
    /*int retinut;
    retinut=mat[iC][jC];*/

    for(i=0;i<m;i++)
        fout<<scol[i]<<" ";
    fout<<endl;

    fout<<"inainte de susta"<<endl;
    for(i=0;i<n;i++)
        mat[i][jC]=mat[i][jC]*(-1);
    afisare(n,m,mat);
    fout<<endl;

///if aicisa:
    if(mat[iC][jC]<0) /*daca a fost pozitiv odinioara*/
    {
        scol[jC]=scol[jC]+mat[iC][jC];
    }

    fout<<"dupa susta"<<endl;
    for(i=0;i<n;i++)
        mat[i][jC]=mat[i][jC]*(-1);
    afisare(n,m,mat);
    fout<<endl;

    //mat[iC][jC]=mat[iC][jC]*(-1); ///aici e problema; ia o usor

    for(j=0;j<m;j++)
        mat[iC][j]=mat[iC][j]*(-1);

    int Smax;
    Smax=0;
    fout<<"Smax inainte de for urile pe matrice= "<<Smax<<endl;

    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            //fout<<"Smax=Smax+mat["<<i<<"]["<<j<<"]="<<Smax+mat[i][j]<<endl;
            fout<<mat[i][j]<<" ";
            Smax=Smax+mat[i][j];
            fout<<"Smax= "<<Smax<<endl;
        }
        fout<<endl;
    }

    fout<<Smax;
    fin.close();
    fout.close();
    return 0;
}