Cod sursa(job #1152273)

Utilizator supernebunuRudiag Ionut supernebunu Data 24 martie 2014 17:07:33
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.44 kb
#include<fstream>
using namespace std;
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)
{
    //s retine suma de pe fiecare linie
    int s=0;
    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;
    }

}

int main()
{
    int a[16][16],n,m;
    ifstream f("flip.in");
    ofstream g("flip.out");
    //citesc numarul de linii si coloane
    f>>n>>m;
    //citesc matricea din fisier
    for(int i=0;i<n;i++)
        for(int j=0;j<m;j++)
            f>>a[i][j];
    //parcurg matricea pe linii
    for(int k=-1;k<=1;k+=2)
    {
        for(int i=0;i<n;i++)
            if(sumLin(a,i,m)<0)
                comuta(a,'l',i,m);
        for(int i=0;i<m;i++)
            if(sumCol(a,i,n)<0)
                comuta(a,'c',i,n);
    }
    g<<sumMat(a,n,m);

    f.close();
    g.close();

    return 0;
}