Cod sursa(job #959914)

Utilizator xSliveSergiu xSlive Data 9 iunie 2013 13:27:17
Problema Jocul Flip Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.88 kb
#include <fstream>
using namespace std;
int main()
{
    int a[17][17],b[17][17],i,j,m,n,s1,s2,ok,s3=0;
    ifstream f("flip.in");
    ofstream g("flip.out");
    f>>m>>n;
    for(i=1;i<=m;i++)
        for(j=1;j<=n;j++)
            f>>a[i][j];
    for(i=1;i<=m;i++)
        for(j=1;j<=n;j++)
            b[i][j]=a[i][j];
    do
    {
    ok=1;
    for(i=1;i<=n;i++)
        {
            s1=0; s2=0;
            for(j=1;j<=m;j++)
                if(a[j][i]>=0)
                    s1+=a[j][i];
                else s2+=-a[j][i];
            if(s2>s1)
                {for(j=1;j<=m;j++)
                    a[j][i]=-a[j][i];
                ok=0;}
        }
    for(i=1;i<=m;i++)
    {
        s1=0; s2=0;
        for(j=1;j<=n;j++)
                if(a[i][j]>=0)
                    s1+=a[i][j];
                else s2+=-a[i][j];
            if(s2>s1)
                {for(j=1;j<=n;j++)
                    a[i][j]=-a[i][j];
                ok=0;}
    }

    }while(!ok);
for(i=1;i<=m;i++)
        for(j=1;j<=n;j++)
            s3=s3+a[i][j];

    do
    {
    ok=1;
    for(i=1;i<=m;i++)
    {
        s1=0; s2=0;
        for(j=1;j<=n;j++)
                if(b[i][j]>=0)
                    s1+=b[i][j];
                else s2+=-b[i][j];
            if(s2>s1)
                {for(j=1;j<=n;j++)
                    b[i][j]=-b[i][j];
                ok=0;}
    }
    for(i=1;i<=n;i++)
        {
            s1=0; s2=0;
            for(j=1;j<=m;j++)
                if(a[j][i]>=0)
                    s1+=b[j][i];
                else s2+=-b[j][i];
            if(s2>s1)
                {for(j=1;j<=m;j++)
                    b[j][i]=-b[j][i];
                ok=0;}
        }
    }while(!ok);
    s1=0;
    for(i=1;i<=m;i++)
        for(j=1;j<=n;j++)
            s1=s1+b[i][j];
    if(s1>s3)
    g<<s1;
    else
    g<<s3;
    return 0;
}