Cod sursa(job #2156508)

Utilizator Stefan_PiscuPiscu Stefan Constantin Stefan_Piscu Data 8 martie 2018 19:32:29
Problema Jocul Flip Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
using namespace std;
int n, m, i, l, c, a[20][20], j, s;
ifstream f("flip.in");
ofstream g("flip.out");
int cmin()
{
    int i, p=1;
    for(i=2;i<=n;++i) if(a[0][i]<a[0][p]) p=i;
    return p;
}
int lmin()
{
    int i, p=1;
    for(i=2;i<=m;++i) if(a[i][0]<a[p][0]) p=i;
    return p;
}
void cflip(int p)
{
    int i;
    for(i=1;i<=n;++i) a[i][p]=-a[i][p], a[0][p]+=(2*a[i][p]), a[i][0]+=(2*a[i][p]);
}
void lflip(int p)
{
    int i;
    for(i=1;i<=m;++i) a[p][i]=-a[p][i], a[p][0]+=(2*a[p][i]), a[0][i]+=(2*a[p][i]);
}
int main()
{
    f>>n>>m;
    for(i=1;i<=n;++i)
        for(j=1;j<=m;++j){ f>>a[i][j];
                           a[i][0]+=a[i][j];
                           a[0][j]+=a[i][j];
                         }
    int ok=1;
    while(ok)
    {
        l=lmin();
        c=cmin();
        if(a[l][0]<a[0][c])
            if(a[l][0]<0) lflip(l);
            else ok=0;
        else
            if(a[0][c]<0) cflip(c);
            else ok=0;
    }
    for(i=1;i<=n;++i) s+=a[i][0];
    g<<s<<"\n";
}