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;