#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 | #42542690 | Utilizator | |
Fișier | text1.cpp | Dimensiune | 2.41 KB |
Data încărcării | 09 Martie 2023, 16:25 | Scor / rezultat | 100 puncte |
In file included from /usr/include/c++/4.8/backward/hash_map:60:0, from text1.cpp:3: /usr/include/c++/4.8/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header which may be removed without further notice at a future date. Please use a non-deprecated interface with equivalent functionality instead. For a listing of replacement headers and interfaces, consult the file backward_warning.h. To disable this warning use -Wno-deprecated. [-Wcpp] #warning \ ^ text1.cpp: In function 'int main()': text1.cpp:59:37: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("text1.in", "rb", stdin); ^ text1.cpp:60:39: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("text1.out", "wb", stdout); ^ text1.cpp:61:22: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result] scanf("%d\n", &N); ^ text1.cpp:62:28: warning: ignoring return value of 'char* fgets(char*, int, FILE*)', declared with attribute warn_unused_result [-Wunused-result] fgets(str, MaxN, stdin); ^
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.012 secunde | Corect! | 10 | 10 | ||
5 | 0.02 secunde | Corect! | 10 | 10 | ||
6 | 0.08 secunde | Corect! | 10 | 10 | ||
7 | 0.036 secunde | Corect! | 10 | 10 | ||
8 | 0.048 secunde | Corect! | 10 | 10 | ||
9 | 0.04 secunde | Corect! | 10 | 10 | ||
Punctaj total | 100 |
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ă.