#3396
Se dau două numere N și M urmate de un șir de numere întregi nenule S de lungime impară N indexat de la 0. Asupra acestuia se vor efectua fix M operații de swap. O operație reprezintă selectarea la întâmplare a doi indici (nu neapărat distincți) din intervalul [0, N – 1] și interschimbarea elementelor de pe pozițiile respective. Se consideră că șirul este alternant dacă nu există elemente alăturate având același semn. Determinați probabilitatea ca la finalul celei de-a M-a operații, șirul să fie alternant. (Se garantează că există cel puțin o aranjare a șirului astfel încât acesta să fie alternant). Se poate demonstra că probabilitatea cerută se poate reprezenta sub forma P / Q unde P si Q sunt prime între ele.
Info-Oltenia 2020, Clasele XI-XII
| Problema | alternant | Operații I/O |
alternant.in/alternant.out
|
|---|---|---|---|
| Limita timp | 1 secunde | Limita memorie |
Total: 8 MB
/
Stivă 2 MB
|
| Id soluție | #40905084 | Utilizator | |
| Fișier | alternant.cpp | Dimensiune | 2.59 KB |
| Data încărcării | 03 Ianuarie 2023, 05:04 | Scor/rezultat | 100 puncte |
alternant.cpp: In function 'void computeMat(const int&, const int&, const int&, const int&)': alternant.cpp:61:33: warning: unused variable 'badA3' [-Wunused-variable] int goodA3 = j + 1, badA3 = A - j - 1, goodB3 = B - (A - j - 1), badB3 = A - j - 1; ^ alternant.cpp:61:78: warning: unused variable 'badB3' [-Wunused-variable] int goodA3 = j + 1, badA3 = A - j - 1, goodB3 = B - (A - j - 1), badB3 = A - j - 1; ^ alternant.cpp:57:13: warning: unused variable 'goodA2' [-Wunused-variable] int goodA2 = j - 1, badA2 = A - j + 1, goodB2 = B - (A - j + 1), badB2 = A - j + 1; ^ alternant.cpp:57:48: warning: unused variable 'goodB2' [-Wunused-variable] int goodA2 = j - 1, badA2 = A - j + 1, goodB2 = B - (A - j + 1), badB2 = A - j + 1; ^ alternant.cpp: In function 'void readData(int&, int&, int&, int&)': alternant.cpp:70:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d%d", &n, &m); ^ alternant.cpp:74:27: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d", &v[i]); ^
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 0 | 0 secunde | OK. | 5 | 5 | ||
| 1 | 0 secunde | OK. | 5 | 5 | ||
| 2 | 0 secunde | OK. | 5 | 5 | ||
| 3 | 0 secunde | OK. | 5 | 5 | ||
| 4 | 0 secunde | OK. | 5 | 5 | ||
| 5 | 0.164 secunde | OK. | 5 | 5 | ||
| 6 | 0 secunde | OK. | 5 | 5 | ||
| 7 | 0.152 secunde | OK. | 5 | 5 | ||
| 8 | 0.012 secunde | OK. | 5 | 5 | ||
| 9 | 0.228 secunde | OK. | 5 | 5 | ||
| 10 | 0.144 secunde | OK. | 5 | 5 | ||
| 11 | 0.204 secunde | OK. | 5 | 5 | ||
| 12 | 0.204 secunde | OK. | 5 | 5 | ||
| 13 | 0.204 secunde | OK. | 5 | 5 | ||
| 14 | 0.204 secunde | OK. | 5 | 5 | ||
| 15 | 0.472 secunde | OK. | 5 | 5 | ||
| 16 | 0.468 secunde | OK. | 5 | 5 | ||
| 17 | 0.468 secunde | OK. | 5 | 5 | ||
| 18 | 0.424 secunde | OK. | 5 | 5 | ||
| 19 | 0.5 secunde | OK. | 5 | 5 | ||
| Punctaj total | 100 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema alternant face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.