Cod sursa(job #760937)

Utilizator Liviu0010Oprescu Liviu Liviu0010 Data 23 iunie 2012 17:28:04
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 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;
    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(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';
    }

}