Sunteți pe pagina 1din 9

Probleme pentru olimpiada

Problema 1. Castelul magic.


Rămaşi singuri în pădure, Ionel şi Sănduț, ştiu, că singura lor şansă de supravieţuire este să găsească şi
să intre în Castelul Fermecat. Poarta castelului este închisă şi pentru a intra este nevoie de un cuvânt magic şi
de un număr fermecat. Zâna cea Bună îi vede pe copii şi pentru că vrea să–i ajute le spune: „Mergeţi tot
înainte, iar în drumul vostru o să întâlniţi copaci pe a căror trunchiuri sunt scrise caractere reprezentând litere
sau cifre. Cuvântul magic este format din toate caracterele literă în ordinea în care apar, dar scrise toate cu
majuscule. Numărul fermecat este cel mai mic număr cu toate cifrele distincte care se poate forma din
caracterele cifră.”
Cerinţă: Pentru a-i ajuta pe Ionel şi Să nduț să intre în Castelul Fermecat, scrieţi un program care
citeşte un numă r natural n, apoi n caractere şi determină :
Probleme pentru olimpiada

a) cuvântul magic;
b) numărul fermecat;
Date de intrare:
Fişierul magic.in conţine pe prima linie un număr natural n, reprezentând numărul de caractere scrise pe copaci.
Pe cea de a doua linie sunt n caractere separate prin câte un spaţiu, reprezentând caracterele scrise pe copaci.
Date de ieşire
Fişierul de ieşire magic.out va conţine două linii:
a) pe prima linie se va scrie un şir de litere mari, reprezentând cuvântul magic;
b) pe a doua linie se va scrie un număr natural cu toate cifrele distincte, reprezentând numărul fermecat.
Restricţii şi precizări:
1≤n≤1000; caracterele sunt doar cifre sau litere mici ale alfabetului englez; printre cele n caractere se află întotdeauna cel
puțin o literă şi cel puţin o cifră; pe fiecare copac este scris un singur caracter; mumărul magic începe întotdeauna cu o cifră
diferită de zero.
Exemplu:
magic.in magic.out Explicaţii
6 CB Cel mai mic număr cu cifre distincte ce se
c 2 5 5 b 2 25 poate obţine este 25.
8 CABD Cel mai mic număr cu cifre distincte ce se
c a 5 0 b 2 5 d 205 poate obţine este 205.

Problema 1. Figuri.
Printre toate jucăriile sale, Mihăiță dispune și de figuri geometrice: triunghiuri și pătrate. Mihăiță știe
următoarea informație despre figurile sale:
a) Numărul total de laturi ale tuturor fiigurilot este egal cu L;
b) Triunghiuri sunt cu N mai multe decît pătrate;
De exepmlu, pentru figurile de mai sus avem L=38 și N=1.

Cerinţă: Scrieți un program Pascal care, îl va ajuta pe Mihăiță să determine cîte triunghiuri și cîte pătrate
are, dacă știe valorile L și N.
Date de intrare
De la tastatură se citesc 2 numere naturale L și N, care au respectiv semnificațiile: L-numărul total de laturi ale figurilor și N-
diferența dintre numărul de triunghiuri și numărul de pătrate.
Date de ieşire
La ecran se vor afișa două numere naturale T și P, separate prin spațiu, care reprezintă respectiv numărul de triunghiuri și numărul
de pătrate printre figurile lui Mihăiță.
Restricţii şi precizări:
0≤N<L<2000000000
Problema admite soluții pentru toate testele de evaluare.
Exemplu:
Intrare Ieșire Explicație
38 1 6 5 Printre figuri sunt 6 triunghiuri cu 63=18 laturi și 5 pătrate cu 54=20 laturi. În
total numărul de laturi este cu 18+20=38. Diferența lor: N=6-5=1.

Problema 2. Panglica.
Gigel are o panglică alcătuită din benzi de 1 cm lăţime, colorate în diverse culori. Panglica are N benzi
colorate cu C culori, culori pe care le vom numerota de la 1 la C. Gigel vrea ca la ambele capete ale panglicii
să aibă aceeaşi culoare, dar cum nu poate schimba culorile benzilor, singura posibilitate rămâne tăierea unor
bucăţi de la capete.
Cerinţă: Scrieţi un program care să determine modul de tăiere a panglicii astfel încât la cele două capete să
fie benzi de aceeaşi culoare, iar lungimea panglicii obţinute să fie maximă.
Date de intrare
Fişierul de intrare PANGLICA.IN conţine:
Probleme pentru olimpiada

– pe prima linie numerele naturale N şi C separate printr-un spaţiu;


– pe următoarele N linii descrierea panglicii: pe fiecare linie un număr natural de la 1 la C, reprezentând în ordine culorile
fâşiilor ce alcătuiesc panglica.
Date de ieşire
Fişierul de ieşire PANGLICA.OUT va conţine următoarele 4 numere:
– pe prima linie numărul de fâşii rămase;
– pe linia a doua numărul culorii care se află la capete;
– pe linia a treia câte fâşii trebuie tăiate de la începutul panglicii iniţiale;
– pe linia a patra câte fâşii trebuie tăiate de la sfârşitul panglicii iniţiale.
Restricţii şi precizări:
 2N10000
 1C200
 Dacă există mai multe soluţii alegeţi pe cea în care se taie cât mai puţin din partea de început a panglicii.
Exemplul 1 Exemplul 2
PANGLICA.IN PANGLICA.OUT PANGLICA.IN PANGLICA.OUT
63 4 52 4
1 2 1 2
2 1 2 1
1 1 1 0
3 2
2 2
3

Problema 3. Litere.
Algorel a primit un joc care conţine n jetoane pe care sunt scrise litere mari ale alfabetului. Fiecare literă are
asociat un cod format dintr-o singură cifră nenulă. Jetoanele se aşează în ordinea dată iniţial, iar prin citirea literelor de
pe acestea, de la primul la ultimul jeton, se formează un cuvânt. Dacă se citesc numerele de pe fiecare jeton, începând
de la primul la ultimul, se obţine un număr k1. Jocul continuă la fel, dar se aşează jetoanele începând de la al doilea la
ultimul, obţinându-se un nou număr k2. Apoi, se aşează jetoanele începând de la al treilea la ultimul, obţinându-se un
nou număr k3, ş.a.m.d. până se ajunge la aşezarea doar a ultimului jeton, caz în care se obţine numărul kn.
Cerinţe:
Scrieţi un program care citeşte numărul n de jetoane, cele n litere asociate jetoanelor, precum şi codurile
asociate literelor, în ordinea apariţiei lor şi afişează:
a) numărul de perechi de litere consecutive din cuvântul iniţial care au proprietatea că o literă este
vocală şi cealaltă este consoană (ordinea lor nu contează);
b) numărul k1, format din aşezarea iniţială a jetoanelor;
c) suma k1+k2+…+kn.
Date de intrare:
Fişierul de intrare litere.in va conţine pe prima linie valoarea lui n, reprezentând numărul de jetoane, pe
a doua linie un cuvânt format din n litere mari (de la ’A’ la ’Z’); literele sunt scrise una după alta, fără să
fie separate cu spaţii, astfel încât prima literă este cea aflată pe primul jeton, a doua literă pe al doilea jeton
ş.a.m.d. Pe a treia linie din fişier se află un număr m ce reprezintă numărul de litere distincte, iar pe a patra
linie m valori reprezentând codurile literelor distincte ce apar în cuvânt. Codurile sunt date în ordinea
apariţiei literelor în cuvânt şi sunt numere naturale nenule formate dintr-o singură cifră, separate printr-un
spaţiu, pentru fiecare literă codul fiind dat o singură dată, chiar dacă litera se repetă.
Date de ieşire:
Fişierul de ieşire litere.out va conţine pe prima linie numărul de perechi de litere consecutive
din cuvânt care au proprietatea că o literă este vocală şi cealaltă consoană (ordinea lor nu contează), pe a doua
linie numărul k1, (format din aşezarea iniţială a jetoanelor), iar pe a treia linie suma k1+k2+…+kn.
Restricţii şi precizări:
- 0 < n ≤ 10000
- 0 < m < 27
Exemple:

litere.in litere.o Explicaţie


ut
3 0 Nu există perechi de litere consecutive care să îndeplinească cerinţa.
CSC 121 Sunt 2 litere distincte{’C’,’S’}, cod(’C’)=1, cod(’S’)=2.
2 143 k1 = 121‚ k2 = 21‚ k3 = 1‚ iar k1+k2+k3 = 121 + 21 + 1 = 143
1 2
Probleme pentru olimpiada

6 5 Există 5 perechi de litere consecutive care să îndeplinească cerinţa:


CABABE 256567 {’CA’, ’AB’, ’BA’, ’AB’, ’BE’}.
4 320342 Sunt 4 litere distincte{’C’, ’A’, ’B’, ’E’}, cod(’C’)=2,
2 5 6 7
cod(’A’)=5, cod(’B’)=6, cod(’E’)=7.
k1 = 256567‚ k2 = 56567‚ k3 = 6567‚ k4 = 567, k5 = 67, k6
= 7, iar k1+k2+k3+k4+k5+k6 = 256567 + 56567 + 6567 + 567 + 67
+ 7 = 320342

Problema 1. Criza financiară mondială.


După începerea crizei financiare mondiale, şoricelul de calculator a hotărît să ia de la depozit un covoraş de rezervă. Ca să nu
observe nimeni covoraşul de rezervă, şoricelul a hotărît să-l ascundă sub covoraşul său de formă dreptunghiulară de dimensiune w
pe h. Ajungînd noaptea la depozit, şoricelul a depistat, că sunt doar covoraşe rotunde cu diametrul d. Deoarece şoricelul nu e prea
puternic la matematică, ajutaţi-l să determine, dacă va putea ascunde covoraşul rotund sub cel de formă dreptunghiulară.
Input: De la tastatură se citesc 3 numere — w, h (dimensiunile covoraşului), și d (diametrul covoraşului de rezervă). Toate
numerele sunt numere naturale nu mai mari de 100.
Output: La ecran se va afișa ‘YES', dacă covoraşul nou poate fi ascuns sub cel vechi şi  ‘NO’, în caz contrar.
Exemplu
Nr INPUT OUTPUT
1 474 YES
2 475 NO

Problema 2. Cartea.
Dumitraș a primit în dar o carte în care paginile sunt amestecate. Se hotărî totuși să o citească, răsfoind cartea într-un singur
sens, de la prima pagină către ultima, în ordinea așezării lor în carte, respectînd următorul algoritm:"Caută la început pagina
numerotată cu x=1. După ce a citit o pagină cu numărul x caută printre paginile următoare acestei pagini, răsfoind cartea, pagina
cu numărul x+1, fără a căuta printre paginile așezate înaintea paginii cu numărul x. Dacă o găsește atunci va continua lectura în
același mod, iar dacă nu o găsește atunci va închide cartea și, în ziua următoare, va relua lectura de la pagina cu numărul x+1, pe
care mai întîi o va cauta răsfoind cartea de la început. Dumitraș va proceda la fel și în zilele următoare pînă cînd va citi
întreaga carte". Scrieți un program care citește un număr natural N, reprezentînd numărul paginilor din carte și N numere naturale
distincte x1, x2,…, xn, reprezentînd ordinea în care sunt așezate cele N pagini în carte, și care determină numărul de zile în care
Dumitraș citește cartea.
Input: Fișierul de intrare carte.in conține pe prima linie numărul N al paginilor din carte, iar pe linia următoare N numere întregi
distincte x1, x2, …, xn, separate prin cîte un spațiu, reprezentînd ordinea în care sunt așezate paginile în carte.
Output: Numărul de zile în care Dumitraș va citi cartea se va afișa la ecran.
Restricții și precizări: 0 < N< 1000; paginile cărții sunt numerotate cu numere naturale distincte de la 1 la N; citirea cărții
presupune citirea fiecărei pagini din carte, o singură dată;zilele în care Dumitraș citește cartea sunt numerotate consecutiv,
începînd cu numărul 1;
Exemplu:
carte.in OUTPU Explicație
T
9 4 -în prima zi a citit paginile: 1,2; a doua zi: 3,4,5; a treia zi : 6; a patra zi : 7,8,9
713682495

Problema 3. Numere „magice”.


Într-o zi frumoasă de vară, Alice îl văzu pe Iepurele Alb, sărind grăbit în scorbura unui copac. Curioasă, Alice îl urmări şi sări
şi ea în scorbură. Spre mirarea ei, ajunse într-o sală mare cu N uşi încuiate. Pe fiecare uşă era scris câte un număr natural. Într-o
clipă, lângă ea apăru Iepurele Alb şi-i spuse că doar uşile cu numere magice pot fi deschise dacă are cheile potrivite. Pentru a o
ajuta, Iepurele Alb i-a explicat că un număr magic este un număr natural care poate fi redus la o cifră prin complementarea
cifrelor acestuia faţă de cifra sa maximă din scrierea zecimală, apoi prin complementarea cifrelor numărului obţinut faţă de cifra
sa maximă şi aşa mai departe până când se obţine o cifră. Evident, nu toate numerele naturale sunt numere magice. De exemplu,
uşa cu numărul 1234 poate fi deschisă cu cheia inscripţionată cu cifra 1 deoarece 1234 este un număr magic ce poate fi redus la
cifra 1 prin complementări repetate (1234321012321012101), iar uşa cu numărul 1204 nu poate fi deschisă
deoarece 1204 nu este un număr magic (indiferent de câte ori s-ar repeta complementarea nu poate fi redus la o cifră:
12043240120432401204 ….). Înainte să dispară, Iepurele Alb îi dădu o cheie aurie inscripţionată cu cifra K şi o
avertiză că poate deschide cu această cheie doar uşile cu numere magice ce pot fi reduse la cifra K. Scrieţi un program care să
citească numerele naturale N, K şi cele N numere naturale scrise pe cele N uşi, şi să determine numărul uşilor care pot fi deschise
cu cheia aurie inscripţionată cu cifra K.
Input: Fişierul alice.in conţine pe prima linie cele două numere naturale N şi K, separate printr-un spaţiu, iar pe a doua linie N
numere naturale, separate prin câte un spaţiu, reprezentând numerele scrise pe cele N uşi.
Output: La ecran se va afișa un număr ce reprezintă numărul uşilor care pot fi deschise cu cheia inscripţionată cu cifra K.
Restricţii şi precizări: complementarea cifrelor unui număr natural faţă de cifra sa maximă din scrierea zecimală constă în
înlocuirea fiecărei cifre c din număr cu diferenţa dintre cifra maximă şi cifra c; de exemplu, cifra maximă a numărului 1234 este
Probleme pentru olimpiada

4 iar prin complementare se înlocuieşte cifra 1 cu 3(=4-1), cifra 2 cu 2(=4-2), cifra 3 cu 1 (=4-3) şi cifra 4 cu 0(=4-
4) rezultând numărul 3210;7  N  10000; 0  K  9;pe fiecare uşă este scris un singur număr natural;
numărul scris pe oricare uşă (din cele N) este mai mare sau egal cu 10 şi mai mic sau egal cu 32800;
Exemplu:
alice.in OUTPUT Explicaţii
7 1 3 Sunt N=7 uşi pe care sunt scrise numerele 1204, 1234, 13, 195, 23, 10,
1204 1234 13 195 23 10 888 888. Cheia primită este inscripţionată cu cifra K=1 şi deschide 3 uşi cu
numerele 1234, 23 şi 10 deoarece numerele magice dintre cele scrise
pe uşi sunt: 1234 (1234321012321012101),
13(13202), 195(195804844), 23(23101), 10(101),
888 (8880). Numărul 1204 nu este un număr magic. Astfel la ecran
se va afișa numărul 3.

Problema 1. Șirul comprimat.


Este dat un șir format doar din literele mari ale alfabetului latin. Șirul dat a fost comprimat după
următoarea metodă: secvențele de caractere ce se repetă (lungimea >1) au fost excluse și înlocuite cu
numărul lor, urmat de caracterul dat. Scrieți un program care, avînd șirul comprimat, determină șirul inițial.

Input: Fișierul sir.in conține șirul comprimat.


Output: Fișierul sir.out va conține șirul inițial.
Restricții : Lungimea șirului comprimat nu întrece valoarea 80.
Exemplu :
Nr SIR.IN SIR.OUT
1 3A4B7D AAABBBBDDDDDDD
2 12C5FE4S CCCCCCCCCCCCFFFFFESSSS
3 22AB AAAAAAAAAAAAAAAAAAAAAAB

Problema 1. Cifru.
Un banchir are un safeu cu cifru. Pentru a nu uita cifrul, vrea să-l scrie pe o foaie, dar codificîndu-l în felul
următor: fiecare cifră să fie înlocuită cu diferenţa dintre cifra 9 si cifra respectivă. Ajutaţi banchirul să codifice cifrul.
Input : Fişierul CIFRU.IN conţine pe un rînd cifrul.
Output: La ecran se va afişa cifrul codificat.
Restricţii: Cifrul este un număr natural ce poate conţine pînă la 10 cifre.
Exemplu:
CIFRU.IN
76809 23190

Problema 2. Smile.
Aurel iubeşte să petreacă mult timp pe reţelele sociale. Odată el a decis să trimită prietenei sale Marcela N
smile-uri. După ce a inserat primul smile, Aurel trebuie să obţină N smile-uri cu ajutorul următoarelor
operaţii:
1. Copie toate smile-urile din mesaj
2. Inserează smile-urile copiate
Ajutaţi-l pe Aurel să trimită N smile-uri cu un număr minim de operaţii. 
Input: Un număr întreg N citit de la tastatură
Output: La ecran se va afişa numărul de operaţii
Restricţii: 1≤N≤2000000000;  Timp de execuţie <1 sec. 
Exemplu:
Intrare: 12
Rezultat: 7
Explicaţie: copy, insert de 3 ori, copy, insert de 2 ori 1+1+1+1=4; 4+4+4=12;

Problema 3. Adunări şi scăderi.


Considerăm un număr întreg N şi un şir de M cifre zecimale nenule. Să se determine dacă numărul N poate
fi rezultatul unei expresii aritmetice simple (fără paranteze), formată exclusiv din cifrele şirului citit şi din
operatorii aritmetici desemnaţi pentru operaţiile de adunare şi scădere (+,-). Scrieţi un program care citeşte
numerele N şi M de pe prima linie a fişierului de intrare şi şirul de M cifre de pe linia următoare şi determină
şi afişează expresiile găsite sau valoarea 0 în cazul în care nu există nici o soluţie.
Probleme pentru olimpiada

Input: Fişierul de intrare adscad.in conţine pe prima linie numerele întregi N M, separate printr-un
spaţiu, reprezentând valoarea ce trebuie obţinută la evaluarea expresiei şi numărul de cifre din şir. Linia a
doua a fişierului de intrare conţine şirul celor M cifre nenule, separate prin câte un spaţiu.
Output : Fişierul de ieşire adscad.out va conţine expresiile determinate, cite una pe linie, în cazul în care
există soluţie, sau valoarea 0 în cazul în care nu există nici o soluţie.
Restricţii -180 ≤ N ≤ 180; 2 ≤ M ≤ 20
- în şirul citit cifrele se pot repeta
- toate cifrele din şir trebuie să apară şi în expresia aritmetică, în aceeaşi ordine în care au fost citite
- în expresia aritmetică, orice cifră trebuie să fie precedată de un operator; în cazul în care prima cifră este
precedată de operatorul '+' acesta nu se pune în expresie
- în expresia aritmetică nu există spaţii
- expresia aritmetică se termină cu caracterul sfârşit de linie
- în cazul în care soluţia nu este unică se vor afişa toate soluţiile corecte
Exemple
adscad.in adscad.out Explicaţii
21 4 3+9+1+8 Soluţie corectă utilizând numai operatorul '+'
3 9 1 8
-1 4 -1+2+3-5 2 soluții corecte
1 2 3 5 -1-2-3+5
-7 7 -1-1-1-1-1-1-1 Soluţie corectă utilizând numai operatorul '-'
1 1 1 1 1 1 1
12 3 0 Nu există soluţie
1 2 3
Problema 1. Ulcior.
La sărbătoarea lui Neptun – zeul apelor, a fost lansat un concurs care estimează modalități optime de
a transporta apa dintr-un bazin de apă cu capacitatea C litri în alt bazin de aceiași capacitate, inițial fiind gol.
Participanților li se pun la dispoziție a cîte 2 ulcioare: primul cu capacitatea de 3 litri, iar al doilea cu
capacitatea de 5 litri.
CERINŢĂ: Scrieți un program care va determina de cîte ori a fost utilizat ulciorul de 3 litri și ulciorul de 5
litri pentru a transporta toată apa din primul bazin în al doilea bazin într-un timp minim.
INTRARE: Fișierul text ulcior.in conține pe prima linie numărul natural C.
IEȘIRE: Fișierul text ulcior.out conține pe prima linie două numere naturale U3 și U5, separate prin
spațiu, care reprezintă respectiv de cîte ori a fost utilizat ulciorul cu capacitatea de 3 litri și de cîte
ori a fost utilizat ulciorul cu capacitatea de 5 litri pentru a transporta repede toată apa din primul
bazin în al doilea bazin.
DE EXEMPLU:
ulcior.in ulcior.out Explicație
13 1 2 Ulciorul U3 a fost utilizat o dată:13=3 litri
Ulciorul U5 a fost utilizat de 2 ori:25=10 litri
Total:10+3=13 litri
RESTRICȚII:
8≤C≤30000
De fiecare dată ulciorul cu care se va transporta apa va fi plin cu apă.

Problema 2. Zar.

Zarul folosit la diverse jocuri este un cub care are desenat pe fiecare faţă a sa
1,2,3,4,5 sau 6 puncte. Pe un zar nu există două feţe cu acelaşi număr de puncte
şi suma punctelor de pe oricare două feţe opuse este egală cu 7.
Pe o masă de joc este desenat un traseu în formă de pătrat, cu latura de
dimensiune n. Fiecare latură a traseului este împărţită în n pătrăţele identice,
care au latura egală cu cea a zarului. Zarul este aşezat iniţial în colţul din stânga
sus al traseului şi apoi rostogolit de pe o faţă pe alta, din pătrăţel în pătrăţel, de-a
lungul traseului parcurs în sensul acelor de ceasornic.
În orice moment ne-am uita la zar, putem vedea numărul punctelor desenate pe trei din feţele sale (aşa cum se vede în
desenul de mai sus).
Probleme pentru olimpiada

Notăm cu f1 faţa cubului orientată spre noi, f2 faţa superioară a cubului, respectiv cu f3 faţa laterală din dreapta.
Pentru exemplul din figură: n=4, faţa dinspre noi (f1) conţine trei puncte, faţa superioară (f2) conţine două
puncte, faţa laterală din dreapta (f3) conţine un punct, iar sensul de deplasare este cel precizat prin săgeţi.

Cerinţă
Cunoscând dimensiunea n a traseului şi numărul punctelor de pe cele trei feţe ale zarului în poziţia iniţială, determinaţi
după k rostogoliri numărul punctelor ce se pot observa pe fiecare din cele trei feţe ale zarului.
Date de intrare
Fişierul zar.in conţine:
- pe prima linie numerele naturale n şi k despărţite print-un spaţiu.
- pe linia a doua trei numere naturale separate printr-un spaţiu ce corespund numărului de puncte de pe feţele f1, f2,
respectiv f3 ale zarului în poziţia iniţială.
Date de ieşire
Fişierul zar.out va conţine o singură linie cu trei numere naturale separate prin câte un spaţiu, care reprezintă numărul
punctelor ce se pot observa pe feţele f1, f2 şi f3 (în această ordine) după ce au fost efectuate k rostogoliri pe traseul
dat.

Restricţii şi precizări
2≤n≤20000, 1≤k≤1000000
Exemplu
zar.in zar.out Explicaţie
4 11 1 5 3 Fiecare latură a traseului este formată din 4 căsuţe şi se vor
3 2 1 efectua 11 rostogoliri. După prima rostogolire spre dreapta,
valorile celor trei feţe (f1, f2, respectiv f3) ale zarului vor fi
3, 6 şi 2. După a doua rostogolire obţinem numerele 3, 5, 6, iar
după a treia rostogolire valorile feţelor vor fi 3, 1 şi 5. În
acest moment zarul a parcurs o latură a traseului. Următoarele
trei rostogoliri se vor efectua în jos, de-a lungul traseului iar
feţele vor avea succesiv valorile 1, 4, 5 apoi 4, 6, 5 şi 6, 3, 5.
Urmează rostogolirile spre stânga, pe feţele zarului vom observa
valorile 6, 5, 4 apoi 6, 4, 2 şi respectiv 6, 2, 3. Ultimele două
rostogoliri se vor efectua în sus de-a lungul laturii din stânga a
traseului. După penultima rostogolire obţinem 5, 6, 3, iar după
ultima rostogolire valorile feţelor vor fi 1, 5 şi 3.

Problema 3. Cuvinte.
Se consideră un şir de cuvinte separate două câte două printr-un spaţiu. Fiecare cuvânt este caracterizat prin
numărul de ordine care reprezintă poziţia lui în şirul de cuvinte (primul cuvânt are numărul de ordine 1). Unui cuvânt i
se pot aplica în mod repetat următoarele transformări: primul caracter al cuvântului (cel mai din stânga) se şterge de
acolo şi se adaugă după ultimul caracter din cuvânt. Astfel, dintr-un cuvânt s cu k caractere se pot obţine alte k-1
cuvinte pe care le numim cuvinte obţinute din transformarea cuvântului s. De exemplu, dintr-un cuvânt format din 4
caractere c1c2c3c4, cuvintele obţinute prin transformarea lui sunt: c2c3c4c1, c3c4c1c2, c4c1c2c3.
Se caută în şirul de cuvinte prima pereche de cuvinte vecine (a,b), în care al doilea cuvânt din pereche (cuvântul
b) este identic cu un cuvânt obţinut din transformarea lui a. Dacă există o astfel de pereche, se şterge cuvântul b din
şir. Prin ştergerea cuvântului b din şir, acesta va avea mai puţin cu un cuvânt! Se repetă operaţia de căutare de mai sus
până când în şirul rămas nu mai există o pereche (a,b) de cuvinte vecine, astfel încât b să fie obţinut prin
transformarea lui a.Se ştie că pe parcursul modificărilor, cuvintele nu-şi schimbă numerele de ordine pe care le-au
avut iniţial.
Cerinţă: Scrieţi un program care să citească şirul de cuvinte şi să afişeze:
a) numărul de ordine al primului cuvânt şters sau valoarea 0 în cazul în care nu se şterge niciun cuvânt
b) numerele de ordine ale cuvintelor rămase după finalizarea operaţiilor de modificare.
Date de intrare
Fişierul cuvant.in conţine o singură linie pe care se află şirul de cuvinte separate două câte două
printr-un spaţiu.
Date de ieşire
Fişierul cuvant.out va conţine:
- pe prima linie numărul de ordine al primului cuvânt şters sau valoarea 0 în cazul în care nu se şterge niciun cuvânt
- pe a doua linie numerele de ordine ale cuvintelor rămase în final în şirul de cuvinte, despărţite două câte două printr-
un spaţiu.
Restricţii şi precizări
Probleme pentru olimpiada

După ultimul cuvânt din şirul iniţial există caracterul !; fiecare cuvânt are maxim 10 caractere, iar în şirul iniţial nu există mai mult
de 25 cuvinte; șirul de cuvinte iniţial este format din cel puţin un cuvânt, o pereche de cuvinte vecine (a,b), din şirul de cuvinte
este caracterizată prin faptul că, după cuvântul a se afla imediat cuvântul b.
Exemplu

S-ar putea să vă placă și