#1201
Text1
Un şir format din cifre trebuie să fie tastat în una sau mai multe sesiuni.
Există două tastaturi: tastatura A
care conţine taste cu toate combinaţiile de exact două cifre: tasta 00
, tasta 01
, 02
, …, 98
, 99
și tastatura B care conţine taste cu toate combinaţiile de exact trei cifre: tasta 000
, tasta 001
, …, 998
, 999
. Cifrele se vor introduce în una sau mai multe sesiuni, pentru o sesiune putându-se folosi o singură tastatură. Datorită unei ordonanțe de urgență, dacă o combinație de taste a fost introdusă cu una din tastaturi în sesiunea curentă și, continuând sesiunea, această combinație poate fi introdusă din nou, este necesar să continuăm sesiunea cel puțin până când o vom introduce din nou. În cazul în care introducem până atunci și alte taste, trebuie să continuăm sesiunea până când vom introduce ultima apariție a lor.
Astfel, dacă şirul 255222255
25
7
este început folosind tastatura A
, se va scrie obligatoriu într‑o sesiune 25 52 22 25 52
. Suntem obligați să tastăm până la ultima apariție a tastei 25
în sesiunea curentă, și când folosim tasta 52
suntem obligați să continuăm până la ultima apariție a acesteia. A
se observa că cifrele de pe pozițiile subliniate sunt tot 2
și 5
, însă nu formează o tastă care se poate apăsa în sesiunea curentă. Deoarece se dorește un număr cât mai mare de sesiuni, se va începe o nouă sesiune în care se va scrie doar 57
.
Cunoscându-se numărul total de cifre și secvența de cifre ce formează şirul, să se determine o modalitate de a despărţi textul astfel încât el să poată fi scris într-un număr maxim de sesiuni.
ONI 2015, Clasele XI-XII
Problema | Text1 | Operații I/O |
text1.in /text1.out
|
---|---|---|---|
Limita timp | 0.4 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #41169076 | Utilizator | |
Fișier | text1.cpp | Dimensiune | 3.33 KB |
Data încărcării | 14 Ianuarie 2023, 17:54 | Scor / rezultat | 70 puncte |
text1.cpp: In function 'int sol(int)': text1.cpp:71:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (poz==str.size()-1) return -0x3f3f3f3f; ^ text1.cpp:72:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (poz>=str.size()) return 0; ^ text1.cpp:76:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (poz+2-1<str.size()) { ^ text1.cpp:100:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (poz+3-1<str.size()) { ^ text1.cpp: In function 'int main()': text1.cpp:134:38: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int poz = mod; poz < str.size(); poz += 2) { ^ text1.cpp:135:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (poz+2-1<str.size()) { ^ text1.cpp:146:38: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int poz = mod; poz < str.size(); poz += 3) { ^ text1.cpp:147:25: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] if (poz+3-1<str.size()) { ^ text1.cpp:161:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while (poz<str.size()) { ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
0 | 0 secunde | Corect! | 10 | 10 | ||
1 | 0 secunde | Corect! | 10 | 10 | ||
2 | 0 secunde | Corect! | 10 | 10 | ||
3 | 0 secunde | Corect! | 10 | 10 | ||
4 | 0.184 secunde | Corect! | 10 | 10 | ||
5 | 0.256 secunde | Corect! | 10 | 10 | ||
6 | Depășit | Limita de timp depășită | 10 | 0 | ||
7 | 0.368 secunde | Corect! | 10 | 10 | ||
8 | Depășit | Limita de timp depășită | 10 | 0 | ||
9 | Depășit | Limita de timp depășită | 10 | 0 | ||
Punctaj total | 70 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Text1 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ă.