#4849
Cu ocazia intrării în sezonul 8 al competiției de robotică FTC, Trixie se decide să își ajute echipa și să curețe terenul pe care au loc sesiunile de antrenament ale echipei. Tema sezonului acesta implică un teren de dimensiuni nemaivăzute până acum, care poate fi reprezentat sub forma de matrice cu n linii și m coloane, matrice cu n * m tile-uri (bucăți de teren cu o formă asemănătoare unei piese de puzzle) pe care Trixie scrie n * m numere naturale notate t[i][j], câte unul pentru fiecare tile. De asemenea, este important să menționăm că terenul este prevăzut cu pereți laterali pe toate cele 4 laturi, astfel încât Trixie nu poate ieși din perimetrul terenului.
Pentru a începe curățenia, aceasta folosește o dronă de ultimă generație care plutește deasupra terenului și efectuează q scanări. O scanare este descrisă prin colțul stânga-sus de coordonate (is, js) și colțul dreapta-jos de coordonate (ij, jj). Din cauza unui defect, drona adaugă 1 la fiecare element din submatricea scanată.
ATENȚIE! Trixie poate să greșească și să aleagă colțul dreapta-jos în afara terenului. În acest caz, scanarea se aplică doar pe intersecția cu terenul:
i2 = min(ij, n), j2 = min(jj, m);
se adaugă 1 tuturor celulelor (i, j) cu is ≤ i ≤ i2 și js ≤ j ≤ j2;
dacă după tăiere rezultă un dreptunghi vid (adică is > i2 sau js > j2), scanarea nu are efect.
După ce toate scanările au fost aplicate, Trixie parcurge terenul și, pentru fiecare pereche de linii consecutive (i, i+1), cu 1 ≤ i ≤ n-1, procedează astfel: ia tile-urile alunecoase de pe linia i și tile-urile super-alunecoase de pe linia i+1, apoi înmulțește fiecare număr de pe tile-urile alunecoase cu fiecare număr de pe tile-urile super-alunecoase. Fiecare astfel de produs se numește nivel de alunecare și corespunde unui OMEGA-tile.
Un tile alunecos este definit ca un tile pe care este scris un număr prim. (Numerele 0 și 1 nu sunt prime.)
Un tile super-alunecos este definit ca un tile pe care este scris un număr aprim. Numim un număr aprim dacă acesta se poate scrie exact ca produsul a două numere prime distincte: x = p * q, unde p și q sunt prime și p ≠ q. (De exemplu 6=2*3 și 10=2*5 sunt aprime, dar 4=2*2 nu este aprim, iar 12=2*2*3 nu este aprim.)
Pentru o pereche de linii (i, i+1), notăm cu P mulțimea valorilor prime din linia i și cu S mulțimea valorilor aprime din linia i+1. Trixie formează toate OMEGA-tile-urile posibile, alegând orice p ∈ P și orice s ∈ S. Nivelul de alunecare este p * s.
Important: dacă există mai multe perechi (p, s) care dau același produs, acel produs apare de mai multe ori (se lucrează cu un multiset de produse).
Trixie își pune n - 1 întrebări (o întrebare pentru fiecare pereche de linii consecutive), de tipul:
„Care este nivelul de alunecare pentru al k-lea cel mai puțin alunecos OMEGA-tile?”
(adică al k-lea produs în ordine crescătoare).
| Problema | Trixie2 | Operații I/O |
trixie2.in/trixie2.out
|
|---|---|---|---|
| Limita timp | 1.6 secunde | Limita memorie |
Total: 64 MB
/
Stivă 64 MB
|
| Id soluție | #63083283 | Utilizator | |
| Fișier | trixie2.cpp | Dimensiune | 4.51 KB |
| Data încărcării | 13 Februarie 2026, 01:59 | Scor/rezultat | 94 puncte |
trixie2.cpp: In function 'bool isAprim(long long unsigned int)': trixie2.cpp:59:19: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while(d * d < a); ^ trixie2.cpp: In function 'long long unsigned int CountingProducts(long long unsigned int)': trixie2.cpp:72:21: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(i = 1; i <= ct2 && j >= 1; i++) ^ trixie2.cpp: In function 'long long unsigned int binarysearch(int)': trixie2.cpp:88:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(products >= x) ^ trixie2.cpp: In function 'int main()': trixie2.cpp:154:48: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if(ct1 == 0 || ct2 == 0 || ct1 * ct2 < k) ^
| Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
|---|---|---|---|---|---|---|
| 1 | 0.08 secunde | OK. | 1 | 1 | ||
| 2 | 0.08 secunde | OK. | 1 | 1 | ||
| 3 | 0.08 secunde | OK. | 2 | 2 | ||
| 4 | 0.08 secunde | OK. | 2 | 2 | ||
| 5 | 0.08 secunde | OK. | 2 | 2 | ||
| 6 | 0.08 secunde | OK. | 2 | 2 | ||
| 7 | 0.08 secunde | OK. | 2 | 2 | ||
| 8 | 0.08 secunde | OK. | 2 | 2 | ||
| 9 | 0.08 secunde | OK. | 3 | 3 | ||
| 10 | 0.08 secunde | OK. | 3 | 3 | ||
| 11 | 0.24 secunde | OK. | 3 | 3 | ||
| 12 | 0.252 secunde | OK. | 3 | 3 | ||
| 13 | Depășit | Limita de timp depășită | 3 | 0 | ||
| 14 | 0.16 secunde | OK. | 3 | 3 | ||
| 15 | 0.196 secunde | OK. | 3 | 3 | ||
| 16 | 0.244 secunde | OK. | 3 | 3 | ||
| 17 | 0.216 secunde | OK. | 3 | 3 | ||
| 18 | 0.08 secunde | OK. | 3 | 3 | ||
| 19 | 0.084 secunde | OK. | 3 | 3 | ||
| 20 | Depășit | Limita de timp depășită | 3 | 0 | ||
| 21 | 0.08 secunde | OK. | 4 | 4 | ||
| 22 | 0.08 secunde | OK. | 4 | 4 | ||
| 23 | 0.08 secunde | OK. | 4 | 4 | ||
| 24 | 0.08 secunde | OK. | 4 | 4 | ||
| 25 | 0.08 secunde | OK. | 4 | 4 | ||
| 26 | 0.08 secunde | OK. | 4 | 4 | ||
| 27 | 0.08 secunde | OK. | 4 | 4 | ||
| 28 | 0.08 secunde | OK. | 4 | 4 | ||
| 29 | 0.08 secunde | OK. | 4 | 4 | ||
| 30 | 0.08 secunde | OK. | 4 | 4 | ||
| 31 | 0.08 secunde | OK. | 4 | 4 | ||
| 32 | 0.08 secunde | OK. | 4 | 4 | ||
| 33 | 0.08 secunde | OK. | 1 | 1 | Exemplu | |
| 34 | 0.08 secunde | OK. | 1 | 1 | Exemplu | |
| Punctaj total | 94 | |||||
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Trixie2 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ă.