Cod sursa(job #1172061)

Utilizator IuliaCristianaMIulia Moldovan IuliaCristianaM Data 16 aprilie 2014 18:44:03
Problema Jocul Flip Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.43 kb
#include <fstream>
using namespace std;
ifstream fin("flip.in");
ofstream fout("flip.out");
double x[10000][10000];
int main()
{/*Gigel a descoperit un nou joc pe care l-a numit "Flip". Acesta se joaca pe o tabla
dreptunghiulara de dimensiuni N*M care contine numere intregi. Fiecare linie si
fiecare coloana are un comutator care schimba starea tuturor elementelor de pe acea
linie sau coloana, inmultindu-le cu -1. Scopul jocului este ca pentru o configuratie
data a tablei de joc sa se actioneze asupra liniilor si coloanelor astfel incat sa
se obtina o tabla cu suma elementelor cat mai mare.
CERINTA
Dandu-se o configuratie pentru tabla "Flip", realizati un program care sa determine suma
maxima pe care Gigel o poate obtine.
DATE DE INTRARE
Prima linie a fisierului flip.in contine doua numere intregi N si M, separate prin cate
un spatiu, care reprezinta dimensiunea tablei. Urmatoarele N linii contin cate M numere
intregi seperate prin cate un spatiu care descriu configuratia tablei de joc.
DATE DE IESIRE
Prima linie a fisierului flip.out contine un numar care va reprezenta suma maxima pe
care Gigel o poate obtine comutand liniile si coloanele tablei de joc.
Restrictii si precizari

    1 ≤ N, M ≤ 16
    Tabla de joc contine numere intregi din intervalul [-1.000.000,1.000.000]

EXEMPLU
flip.in	flip.out
5 3    | 28
4 -2 2 |
3 -1 5 |
2 0 -3 |
4 1 -3 |
5 -3 2 |*/
    int n,m,i,j,butc,butl,s=0,sc=0,sl=0,min1=0,min2=0;
    fin>>n>>m;
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            fin>>x[i][j];
    for(j=1;j<=m;j++)
    {
        sc=0;
        for(i=1;i<=n;i++)
            sc=sc+x[i][j];
        if(sc<min1)
        {
            min1=sc;
            butc=j;
        }
    }
    for(i=1;i<=n;i++)
    {
        sl=0;
        for(j=1;j<=m;j++)
            sl=sl+x[i][j];
        if(sl<min2)
        {
            min2=sl;
            butl=i;
        }
    }
    for(j=1;j<=m;j++)
        x[butl][j]=x[butl][j]*(-1);
    for(i=1;i<=n;i++)
        x[i][butc]=x[i][butc]*(-1);
    for(i=1;i<=n;i++)
        for(j=1;j<=m;j++)
            s=s+x[i][j];
    fout<<s;
    /*for(j=1;j<=m;j++)
        for(i=1;i<=n;i++)
            if(x[j][i]<=0)
                {nrmin++;
                y[f]=nrmin;
                z[f]=j;
                f++;}*/
    /*for(i=1;i<=n;i++)
        {for(j=1;j<=m;j++)
            fout<<x[i][j]<<" ";
        fout<<"\n";
        }*/
    return 0;
}