Cod sursa(job #1484096)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 10 septembrie 2015 14:41:16
Problema Jocul Flip Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>

using namespace std;

int n,m,i,j,v[290],x[290],s,a[17][17],maxim,s2;

ifstream fin ("flip.in");

ofstream fout ("flip.out");

int main (){

    fin>>n>>m;
    for (i=1;i<=n;i++)
        for (j=1;j<=m;j++)
            fin>>a[i][j];
    maxim = 0;
    while (v[0] != 1){
        s = 0;
        for (i=1;i<=m;i++){
            if (v[i] == 1){
                for (j=1;j<=n;j++)
                    s+=a[j][i]*-1;
            }
            else
                for (j=1;j<=n;j++)
                    s+=a[j][i];
        }
        if (s > maxim){
            maxim = s;
            for (i=1;i<=m;i++)
                x[i] = v[i];
        }
        j = m;
        while (j > 0 && v[j] == 1){
            v[j] = 0;
            j--;
        }
        v[j] ++;
    }
    for (i=1;i<=m;i++){
        if (x[i] == 1){
            for (j=1;j<=n;j++)
                a[j][i]*=-1;
        }
    }

    for (i=1;i<=n;i++){
        s2 = 0;
        for (j=1;j<=m;j++){
            s2+=a[i][j]*-1;
        }
        if (maxim + s2 > maxim){
            maxim = maxim + s2;
            for (j=1;j<=m;j++)
                a[i][j] *= -1;
        }
    }
    s = 0;
    for (i=1;i<=n;i++){
        for (j=1;j<=m;j++)
            s+=a[i][j];
    }
    fout<<s;

    return 0;
}