Cod sursa(job #1755577)

Utilizator MihalachiRazvanMihalachi Razvan MihalachiRazvan Data 10 septembrie 2016 16:50:30
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.64 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("flip.in");
ofstream g("flip.out");
int n,m;
long int i,j,a[17][17],minc,minl,pozi,pozc,s;
long int sumal(long int i,long int j)
{
    if(j>m)
        return 0;
    else
        return a[i][j]+sumal(i,j+1);
}
long int sumac(long int i,long int j)
{
    if(i>n)
        return 0;
        else
            return a[i][j]+sumac(i+1,j);
}
long int sumanrneg()
{
    long int sneg=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        if(a[i][j]<0)
        sneg=sneg+a[i][j];
        return sneg;
}
int main()
{
    int sw=0;
    minc=1000000;
    minl=minc;
    f>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
        f>>a[i][j];
         while(sw==0)
         {
            for(i=1;i<=n;i++)
                if(minl>sumal(i,1))
            {
                minl=sumal(i,1);
                pozi=i;
            }
                for(j=1;j<=m;j++)
                    if(minc>sumac(1,j))
                {
                    minc=sumac(1,j);
                    pozc=j;
                }
                if(minc<minl)
                {
                    for(i=1;i<=n;i++)
                        a[i][pozc]=-a[i][pozc];
                }
                else
                {
                    for(j=1;j<=m;j++)
                        a[pozi][j]=-a[pozi][j];
                }
                s=0;
             for(j=1;j<=m;j++)
                    s=s+sumac(j,1);
             if(((s/2)+sumanrneg())>0)
                sw=1;
         }
         g<<s;
            f.close();
            g.close();

    return 0;
}