Page 1 of 1

Jocul Flip

Posted: 06 Sep 2014, 11:38
by ChrystianSandu
Buna ziua,
Nu inteleg de ce nu primesc punctajul complet pe problema:
II rog pe mai marii IT-ului de pe acest forum sa imi raspunda.

Cerinta:
Spoiler | Afiseaza
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.
Flip.in:
Spoiler | Afiseaza
[code]5 3 4 2 2 3 -1 5 2 0 -3 4 1 -3 5 -3 2 [/code]
Problema:
Spoiler | Afiseaza
[code]#include <iostream> #include <fstream> using namespace std; ifstream fin ("flip.in"); ofstream fout ("flip.out"); int n, m, i, j, a[20][20], s; int main() { fin >> n >> m; for (i=0; i<n; i++) { for (j=0; j<m; j++) { fin >> a[i][j]; } } for (j=0; j<m; j++) { s = 0; for (i=0; i<n; i++) { s = s + a[i][j]; } if (s<0) { for (i=0; i<n; i++) { a[i][j] = a[i][j] * (-1); } } } for (i=0; i<m; i++) { s = 0; for (j=0; j<n; j++) { s = s + a[i][j]; } if (s<0) { for (j=0; j<m; j++) { a[i][j] = a[i][j]*(-1); } } } s = 0; for (i=0; i<n; i++) { for (j=0; j<m; j++) { s = s + a[i][j]; } } fout << s; return 0; } [/code]

Re: Jocul Flip

Posted: 21 Sep 2014, 21:11
by ChrystianSandu
Se pare ca tot eu raspund. Nu prea am avut timp, pana acum. Metoda de mai sus este valabila pentru majoritatea perechiile de numere, dar exista gen -2 3 / 3 -2 care nu merg cu aceasta metoda. Rezolvarea este cu BackTrack. Puteti da lock + close;