Cod sursa(job #583701)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 21 aprilie 2011 22:25:46
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.84 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
long long  n,m,i,j,s,ss,mins,lin,col,mini,sl,sc;
long long a[100][100];
int main()
{
    f>>n>>m;
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++) f>>a[i][j];
    while (1)
    {
    mini=0;
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++) if (a[i][j]<mini) {mini=a[i][j];lin=i;col=j;}

        sc=0;
        for (i=1; i<=n; i++) sc=sc+a[i][col];
        sl=0;
        for (j=1; j<=m; j++) sl=sl+a[lin][j];
        if ((sl>=0)&&(sc>=0)) break;
        if (sl>sc){for(i=1; i<=n; i++) a[i][col]=a[i][col]*(-1);}
        else{for(j=1; j<=m; j++) a[lin][j]=a[lin][j]*(-1);}
    }
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++)
            ss=ss+a[i][j];
    g<<ss<<'\n';

    g.close();
    f.close();
    return 0;
}

/*
//20 PCT
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
long long  n,m,i,j,s,ss,mins,lin,col;
long long a[100][100];
int main()
{
    f>>n>>m;
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++) f>>a[i][j];
    while (1)
    {   mins=0;
        for (i=1; i<=n; i++)//pe linii
        {   s=0;
            for (j=1; j<=m; j++) s=s+a[i][j];
            if (s<0 && s<mins){mins=s;lin=i;}
        }
        if (mins<0)
        { for(j=1; j<=m; j++) a[lin][j]=a[lin][j]*(-1);}
        mins=0;
        for (j=1; j<=m; j++)//pe coloane
        {   s=0;
            for (i=1; i<=n; i++) s=s+a[i][j];
            if (s<0 && s<mins){mins=s;col=j;}
        }
        if (mins<0)
        { for(i=1; i<=n; i++) a[i][col]=a[i][col]*(-1);}
    if(mins==0)break;
    }
    for (i=1; i<=n; i++)
        for (j=1; j<=m; j++)
            ss=ss+a[i][j];
    g<<ss<<'\n';

    g.close();
    f.close();
    return 0;
}
*/