Cod sursa(job #1207645)

Utilizator cosminionutCosmin Ionut cosminionut Data 13 iulie 2014 15:29:25
Problema Jocul Flip Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <fstream>
using namespace std;

#define INF 2147483647

ifstream f("flip.in");
ofstream g("flip.out");

int l[17],c[17],a[17][17],N,M,lmin,cmin,pozl,pozc;
long long scurenta, sveche;

int main()
{
    std::ios::sync_with_stdio(false);
    int i,j;
    f>>N>>M;
    for(i=1;i<=N;i++)
        for(j=1;j<=M;j++)
            f>>a[i][j],scurenta+=a[i][j],l[i]+=a[i][j],c[j]+=a[i][j];
    while(scurenta > sveche)
    {
        lmin=INF;
        cmin=INF;
        for(i=1;i<=N;i++)
            if(l[i]<lmin)   {lmin=l[i];pozl=i;}
        for(i=1;i<=M;i++)
            if(c[i]<cmin)   {cmin=c[i];pozc=i;}
        ///
        sveche=scurenta,scurenta=0;;
        ///
        if(lmin<=cmin)
            for(i=1;i<=M;i++)
                a[pozl][i]*=-1;
        else
            if(cmin<lmin)
            for(i=1;i<=N;i++)
                a[i][pozc]*=-1;
        ///
        for(i=1;i<=N;i++)            l[i]=0;
        for(i=1;i<=M;i++)            c[i]=0;

        for(i=1;i<=N;i++)
            for(j=1;j<=M;j++)
                scurenta+=a[i][j],l[i]+=a[i][j],c[j]+=a[i][j];

    }
    g<<sveche;
    ///calculez minimul din vectorii l si c
    ///recalculez scurenta si vechea scurenta devine sveche
    ///verific daca scurenta > sveche. Daca nu, opresc algoritmul si afisez sveche
    ///inlocuiesc in tabel linia sau coloana minima
    ///
    return 0;
}