Cod sursa(job #1152225)

Utilizator gaidurioanIoan Gaidur gaidurioan Data 24 martie 2014 16:50:21
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.77 kb
#include<fstream>
using namespace std;

int a[16][16],n,m;

void citire()//functia de citire
{
    ifstream f("flip.in");
    f>>n>>m;
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            f>>a[i][j];
    f.close();
}

int sumLin(int a[16][16], int idLin, int nrCol)//functia calculeaza suma de pe linie
{
    int s=0;
    for(int i=0; i<nrCol; i++)
        s+=a[idLin][i];
    return s;
}

int sumMat(int a[16][16], int nrLin, int nrCol)//functia calculeaza suma matricii
{
    int s=0;//s retine suma de pe fiecare linie
    for(int i=0; i<nrLin; i++)
        s+=sumLin(a, i, nrCol);
    return s;
}

int sumCol(int a[16][16], int idCol, int nrLin)//functia calculeaza suma de pe coloana
{
    int s=0;
    for(int i=0; i<nrLin; i++)
        s+=a[i][idCol];
    return s;
}

void comuta(int a[16][16], char mod, int id, int nr)
{
    switch(mod)
    {
        case 'l': for(int i=0;i<nr;i++) a[id][i]=-a[id][i]; break;
        case 'c': for(int i=0;i<nr;i++) a[i][id]=-a[i][id]; break;
        default: break;
    }

}

void parcL()
{
    for(int i=0;i<n;i++)//parcurg matricea pe linii
    {
        //int S;//in S retin suma elementelor matricii
        //S=sumMat(a,n,m);
        if(sumLin(a,i,m)<0) comuta(a,'l',i,m);
        //if(S<sumMat(a,n,m)) comuta(a,'l',i,m);
    }
}

void parcC()
{
    for(int i=0;i<m;i++)//parcurg matricea pe coloane
    {
        //int S;//in S retin suma elementelor matricii
        //S=sumMat(a,n,m);
        if(sumCol(a,i,n)<0) comuta(a,'c',i,n);
        //if(S<sumMat(a,m,n)) comuta(a,'c',i,n);
    }
}

int main()
{
    ofstream g("flip.out");
    citire();//citirea din fisier(m, n si matricea)
    parcL();
    parcC();
    g<<sumMat(a,n,m);
    g.close();

    return 0;
}