Cod sursa(job #903191)

Utilizator Vally77FMI Calinescu Valentin Gelu Vally77 Data 1 martie 2013 19:01:00
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.48 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream ka("flip.in");
ofstream ki("flip.out");
int n,m,a[17][17],k;
long long s,ss,maxim[34];
bool maxime[34];
bool gasit;
int main()
{
    ka>>n>>m;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    ka>>a[i][j];
    gasit=true;
    while(gasit)
    {
    gasit=false;
    k=0;
    for(int i=1;i<=n;i++)
    {
        s=0;ss=0;
        for(int j=1;j<=m;j++)
        {
            if(a[i][j]>0)
            s+=a[i][j];
            else
            ss+=-a[i][j];
        }
        if(ss>s)
        {
        gasit=true;
        maxim[i]=ss;
        }
    }
    for(int j=1;j<=m;j++)
    {
        s=0;ss=0;
        for(int i=1;i<=n;i++)
        {
            if(a[i][j]>0)
            s+=a[i][j];
            else
            ss+=-a[i][j];
        }

        if(ss>s)
        {
        gasit=true;
        maxim[17+j]=ss;
        maxime[17+j]=1;
        }
    }
    if(gasit)
    {
    int maximm=0,poz=0;
    for(int f=1;f<=34;f++)
    if(maxim[f]>maximm)
    {
    maximm=maxim[f];
    poz=f;}
        if(maxime[poz]==0)
        {for(int j=1;j<=m;j++)
        a[poz][j]=-a[poz][j];}
        else
        {for(int j=1;j<=n;j++)
        a[j][poz-17]=-a[j][poz-17];}
    for(int g=1;g<=34;g++)
    {
        maxim[g]=0;
        maxime[g]=0;
    }
    gasit=true;
    }

    }
    s=0;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    s+=a[i][j];
    ki<<s;


}