Cod sursa(job #1091)

Utilizator aLiNuSh-LTDTomescu Alin aLiNuSh-LTD Data 12 decembrie 2006 17:47:42
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.76 kb
#include <fstream>
#include <iostream>
#include <cstdlib>
using namespace std;

long tabla[17][17]; //tabla de joc
unsigned int n,m;   //dimensiunile tablei de joc
long long smax = 0;

void ReadData ()
{
    register unsigned int i,j;  //contoare rapide
    
    //citim fisierul de intrare
    fstream fin("flip.in", ios::in);
    fin >> n;
    fin >> m;
    for ( i = 0; i < n; ++i )
        for ( j = 0; j < m; ++j )
            {
            fin >> tabla[i][j];
            }
    fin.close();
}
void WriteData ()
{
    fstream fout("flip.out", ios::out);
    fout << smax;
    fout.close();
}
void ShowData ()
{
    register unsigned int i,j;  //contoare rapide
    //afisam tabla de joc
    for ( i = 0; i < n; ++i )
        {
        for ( j = 0; j < m; ++j )
            {
            cout << tabla[i][j] << " ";
            }
        cout << endl << endl;
        }
}

void FlipColumn (unsigned int j)
{
     register unsigned int i;
     for (i = 0; i < m; i++)
     {
         tabla[i][j] *= -1;
     }
}

void FlipRow (unsigned int i)
{
     register unsigned int j;
     for (j = 0; j < n; j++)
     {
         tabla[i][j] *= -1;
     }
}

void FlipMatrix ()
{
     register unsigned int i,j;
     for (i = 0; i < n; i++)
     {
       for (j = 0; j < m; j++)
       {
           int sr = 0, sc = 0;
           sr += tabla[i][j];
           if (sr <= 0) FlipRow (i);
           sc += tabla[j][i];
           if (sc <= 0) FlipColumn (i);
       }
     }
     for (i = 0; i < n; i++)
     {
       for (j = 0; j < m; j++)
       {
           smax += tabla[i][j];
       }
     }
}

int main(void)
{      
    ReadData ();
    ShowData ();
    FlipMatrix ();
    WriteData ();
    
    return(0);
}