După o zi grea la școală, Alex ajunge acasă și intră pe Twitch să se uite la streamer-ul lui preferat, xQc. Se pare că acesta dă un 1v1 pe Fortnite cu un alt streamer popular, Ninja. Acesta este foarte bun la Fortnite și ar putea să îl bată pe xQc foarte ușor. Însă norocul a dat ca xQc să câștige bătălia. Chat-ul a fost uimit. Toată lumea spama W
pentru a celebra victoria. În caz că nu știați, W
vine de la Win
🙀.
Este rândul ca Alex să celebreze victoria. El vrea să trimită mesaje pe chat, fiecare conținând caractere de W
. Alex vrea să găsească numărul minim de apăsări de taste necesare pentru a scrie mesajul folosind doar tastatura. Iată o listă cu ce poate face el cu tastatura:
- Poate să apase tasta
W
. Astfel, va adăuga un caracter deW
la sfârșitul mesajului lui. - Poate să apese tasta
BACKSPACE
. Astfel, va șterge ultimul caracter din mesajul lui. - Alex poate să apese tasta
CTRL
. Această tastă este mai specială, deoarece poată fi combinată cu exact o altă tastă dintreA
,C
sauV
.- În timp ce tasta
CTRL
este apăsată, Alex poate să apese tastaA
. Astfel, textul va fi selectat de calculator și poate fi folosit la combinațiaCTRL-C
descrisă în continuare. - În timp ce tasta
CTRL
este apăsată, poate să apese tastaC
. Astfel, textul selectat cu combinațiaCTRL-A
va rămâne selectat și va fi plasat în clipboard. Funcționarea clipboard-ului este explicată în continuare. - În timp ce tasta
CTRL
este apăsată, Alex poate să apese tastaV
. Astfel, există 2 cazuri:- Când mesajul conține o porțiune de text selectată, combinația
CTRL-V
va înlocui textul selectat cu ultimul text adăugat în clipboard. Textul se va deselecta automat. - Când mesajul nu conține nicio porțiune de text selectată, combinația
CTRL-V
va adăuga la sfârșitul mesajului ultimul text adăugat în clipboard.
- Când mesajul conține o porțiune de text selectată, combinația
- În timp ce tasta
- În sfârșit, Alex mai poate să apese tasta
ENTER
. Astfel, se va trimite mesajul scris de Alex către chat. După trimitere, caseta de text se va goli complet.
Atenție, Alex nu are voie să lase nicio tastă apăsată, înafară de tasta CTRL
. Pentru mai multe explicații, vezi exemplele.
Cerință
Scopul tău este să faci un program care să afișeze, pentru fiecare număr din cele date, numărul minim de apăsări de taste necesare pentru a scrie un mesaj format doar din caractere de W
. Tu îi vei trimite lui Alex acest program ca să îl poată folosi oricând are nevoie, iar el te va plăti cu 100 de lei puncte.
Date de intrare
Se citește din consolă pe prima linie un număr .
Pe fiecare din următoarele linii se găsește numărul .
Date de ieșire
Se afișează în consolă pe linia răspunsul pentru al -lea citit.
Restricții și precizări
- .
- .
- Atenție! Punctajul obținut pe o submisie este suma maximelor subtask-urilor din toate submisiile trimise până atunci. Dacă la submisia 1 ați rezolvat doar subtask-ul , iar la submisia 2 ați rezolvat doar subtask-urile și , atunci punctajul final va fi constituit din subtask-urile , și .
- Singura modalitate de a selecta text este folosind combinația de taste
CTRL-A
. - Fiecare test din cele începe cu un clipboard gol.
- Din motive necunoscute, Alex păstrează mereu tasta Caps Lock activată.
- Chiar dacă nu aveți o soluție eficientă, implementați-o. Limitele din subtask-uri pot părea foarte mari, dar de fapt nu prea sunt!
Subtask 1 (7 puncte)
- Alex poate scrie toate cele mesaje într-un număr minim de apăsări de taste folosind doar tastele
W
șiENTER
.
Subtask 2 (9 puncte)
- .
- Ăsta-i brutul!
Subtask 3 (14 puncte)
- Alex nu are nevoie de tasta
BACKSPACE
pentru a scrie toate cele mesaje într-un număr minim de apăsări de taste. - .
Subtask 4 (12 puncte)
- .
Subtask 5 (21 puncte)
- .
Subtask 6 (37 puncte)
- Fără restricții suplimentare.
Exemple și explicații
stdin
2
5
15
stdout
6
12
. Mesajul se poate scrie folosind apăsări de taste: W
, W
, W
, W
, W
, ENTER
.
. Mesajul se poate scrie folosind apăsări de taste.
Întâi, scriem același mesaj ca mai sus apăsând taste (W
, W
, W
, W
, W
), apoi vom copia acest mesaj de încă două ori. Pentru asta, lăsăm apăsat CTRL
în timp ce apăsăm următoarele taste: A
, C
, V
, V
, V
. La final, apăsăm ENTER
. .
Aceasta nu este singura modalitate de a scrie mesajul în apăsări de taste.