Cod sursa(job #1740651)

Utilizator fulger13Pomirleanu Sebastian fulger13 Data 11 august 2016 22:41:50
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <iostream>
#include <fstream>

using namespace std;

int a[20][20],v[20][20],n,m;

ifstream q("flip.in");
ofstream w("flip.out");

void comuta_rand(int c)
{
    int i;
    for(i=1;i<=m;i++) a[c][i]*=-1;
}

void comuta_col(int c)
{
    int i;
    for(i=1;i<=n;i++) a[i][c]*=-1;
}


///|||||||||||||||||||||||||||
int main()
{int      i,j,s;
    q>>n>>m;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
            q>>a[i][j];
        }
    }
    while(1)
    {
        for(i=1;i<=n;i++)
        {
            s=0;
            for(j=1;j<=m;j++)
            {
                s+=a[i][j];
            }
            v[1][i]=s;
        }
        ///
        for(i=1;i<=m;i++)
        {
            s=0;
            for(j=1;j<=n;j++)
            {
                s+=a[j][i];
            }
            v[2][i]=s;
        }
        int c,hm,l;
        c=1;
        l=n;  ///folosit ca sa comutam din a verifica sumele celor n randuri, in sumele celor m coloane
        hm=1;
        s=v[1][1];
        for(i=1;i<=2;i++)
        {
            for(j=1;j<=l;j++)
            {
                if(s>v[i][j]) {s=v[i][j]; hm=i; c=j;}
            }
            l=m;
        }
        if(s>=0) break;
        if(hm==1)comuta_rand(c);
        if(hm==2)comuta_col(c);
    }
    s=0;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            s+=a[i][j];
    w<<s;
    return 0;
}