Cod sursa(job #760957)

Utilizator Liviu0010Oprescu Liviu Liviu0010 Data 23 iunie 2012 18:44:53
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include<fstream>
#include<iostream>
using namespace std;

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

long int spl(int l)
{
    int i;
    long int s=0;

    for(i=0;i<m;i++)
     s+=mat[l][i];

     return s;
}

long int snl(int l)
{
    int i;
    long int s=0;

    for(i=0;i<m;i++)
    s+=(mat[l][i])*(-1);

    return s;
}

void invl(int l)
{
    int i;
    for(i=0;i<m;i++)
     mat[l][i]=(mat[l][i])*(-1);
}

long int spc(int c)
{
    int i;
    long int s=0;

    for(i=0;i<n;i++)
     s+=mat[i][c];

     return s;
}

long int snc(int c)
{
    int i;
    long int s=0;

    for(i=0;i<n;i++)
     s+=(mat[i][c])*(-1);

     return s;
}

void invc(int c)
{
    int i;
    for(i=0;i<n;i++)
     mat[i][c]=(mat[i][c])*(-1);
}


int main()
{
    int i,j,k;
    long int s=0;
    ifstream in("flip.in");
    ofstream out("flip.out");
    in>>n>>m;

    for(i=0;i<n;i++)
     for(j=0;j<m;j++)
      in>>mat[i][j];

    in.close();
    for(k=0;k<n*m;k++)
    {
      for(i=0;i<n;i++)
       if(spl(i)<snl(i))
        invl(i);

      for(i=0;i<m;i++)
       if(spc(i)<snc(i))
        invc(i);
    }

    for(i=0;i<n;i++)
     for(j=0;j<m;j++)
      s+=mat[i][j];

    out<<s<<'\n';

    out.close();

    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
         cout<<mat[i][j]<<' ';
      cout<<'\n';
    }

}