Model subiect olimpiada de informatică, clasa a 9-a, faza județeană

1 – arc  pag. 1 din 2    
 
Problema 1 -  arc                             100 puncte 
 
Irinuca a descoperit un nou joc pe calculator. Pe ecran sunt plasate pe o linie n bile colorate. 
Culorile bilelor sunt codificate cu numere naturale. Un subșir de bile alăturate având toate aceeași 
culoare se numește secvență. O secvență va conține numărul maxim de bile  alăturate având aceeași 
culoare. Lungimea unei secvențe este egală cu numărul de bile din care este compusă. 
Irinuca are la dispoziție un arc special. Tr ăgând cu arcul asupra unei bile, dacă aceasta face parte 
dintr-o secvență de lungime cel puțin egală cu 3, întreaga secvență va fi eliminată, iar bilele din dreapta 
secvenței se vor deplasa spre stânga pentru a umple “golul” lăsat de bilele eliminate. Dacă imediat în 
stânga și în dreapta secvenței eliminate se găseau două secvențe având aceeași culoare și dacă secvența 
obținută din unirea acestora după eliminare are o lungime cel puțin egală cu 3, atunci va fi și ea 
eliminată la rândul ei. Procesul continuă până când secvențele din stânga și dreapta unei secvențe tocmai 
eliminate au culori diferite sau până când lungimea secvenței obținute prin alăturare este mai mică de cât 
3 sau până când în stânga ori în dreapta unei secven țe eliminate nu se mai găsesc bile sau până sunt 
eliminate toate bilele de pe ecran. 
Scopul jocului este de a elimina cât mai multe bile de pe ecran. Cum Irinuca încă nu se pricepe 
prea bine la acest joc și-a stabilit o strategie. Va trage cu arcul întotdeauna asupra unei bile ce face parte 
din secvența de lungime maximă de pe ecran. Dacă sunt mai multe astfel de secvențe , ea va alege cea 
mai din stânga secvență de lungime maximă. Dacă toate secvențele de pe ecran au lungimi mai mici 
decât 3, Irinuca nu va mai putea elimina nici una din ele și jocul se încheie. 
 
De exemplu, dacă șirul inițial de bile este  
5 1 3 3 2 2 2 2 3 1 1 5 6 4 4 4 4 7 
Irinuca va acționa asupra unei bile de culoare 2.  Prin eliminare se obține șirul de bile 
5 1 3 3 3 1 1 5 6 4 4 4 4 7 
din care se elimină și secvența de bile de culoare 3 obținându-se șirul de bile 
5 1 1 1 5 6 4 4 4 4 7 
din care se elimină și secvența de culoare 1. 
5 5 6 4 4 4 4 7 
Cum secvența de bile de culoare 5 nu este suficient de lungă , aceasta nu se mai elimină. Acum Irinuca 
trage asupra unei bile de culoare 4 și obține 
5 5 6 7 
dar cum în stânga și în dreapta secvenței eliminate sunt secvențe de culori diferite, nu se va mai elimina 
nici o secvență. Jocul se încheie deoarece nu mai există nici o secvență de lungime cel puțin 3 asupra 
căreia să se poată trage. 
 
Cerinţă 
Cunoscând numărul de bile și culorile fiecărei bile de pe ecran se cere să se determine: 
 1. numărul de secvențe de bile care se aflau inițial pe ecran; 
 2. numărul de bile care rămân neeliminate de pe ecran și culorile bilelor rămase în ordine pe 
ecran la finalul jocului.  
  
Date de intrare  
Fişierul de intrare arc.in conţine pe prima linie un număr natural V. Pentru toate testele de 
intrare, numărul V poate avea doar valoarea 1 sau 2. 
A doua linie conține un număr natural n reprezentând numărul de bile, iar a treia linie conține n 
numere naturale c1, c2, ..., cn  separate prin câte un spațiu, reprezentând culorile celor n bile de pe 
ecran. 
 
 Ministerul Educaţiei si Cercetării Știintifice 
Olimpiada Judeţeană de Informatică                    Clasa a IX-a 
7 martie 2015 
Sursa: ID1.c, ID1.cpp, ID1.pas 
 
Problema 1 – arc  pag. 2 din 2    
 
Date de ieşire 
Dacă valoarea lui V este 1,  se va rezolva numai punctul 1 din cerință.  
În acest caz, în fişierul de ieşire arc.out se va scrie un singur număr natural n1, reprezentând 
numărul de secvențe de bile aflate inițial pe ecran.  
Dacă valoarea lui V este 2, se va rezolva numai punctul 2 din cerință.  
În acest caz, în fişierul de ieşire arc.out se va scrie pe prima linie un singur număr natural n2, 
reprezentând numărul de bile care rămân neeliminate de pe ecran la finalul jocului, iar pe următoarele 
n2 linii se va scrie câte un număr natural reprezentând în ordine culorile bilelor rămase neeliminate la 
finalul jocului. 
Dacă la finalul jocului nu mai rămâne nici o bilă neeliminată, fișierul de ieșire va conține pe 
prima sa linie valoarea 0. 
   
Restricţii şi precizări 
 
• 1 ≤ n ≤ 10 000 
• 1 ≤ c1, c2, …, cn ≤ 100 000 
• Pentru rezolvarea corectă a primei cerinţe se acordă 20 de puncte, iar pentru cerința a doua se 
acordă 80 de puncte. 
 

2 – defrag  pag. 1 din 2    
Problema 2 - defrag                          100 puncte  
Discul dur  (hard disk ) este un dispozitiv utilizat pentru stocarea datelor. Stocarea se face pe o suprafață 
magnetică dispusă pe platane rotunde metalice. Pe un platan, datele sunt organizate în piste și sectoare, iar zona 
aflată la intersecția dintre o pistă și un sector poartă denumirea de cluster. 
Un cluster poate avea două stări: liber, dacă nu conține date, sau ocupațatunci când conține date.  
Un platan se numește  defragmentat dacă toți clusterii ocupați de pe fiecare pistă s unt așezați  în ordine 
consecutivă. Defragmentarea se realizează prin mutarea unor clusteri ocupați  și are rolul de a  micșora timpul de 
acces la date . Mutarea unui cluster  reprezintă transferul datelor de la un cluster ocupat către un cluster liber  de pe 
aceeași pistă.   
 
 
     
 
 
 
 
 
Cerință 
Cunoscând numărul de piste P și de sectoare S al unui platan, numărul și poziția clusterilor ocupați, să se scrie 
un program care determină : 
1. numărul de piste care au toți clusterii liberi; 
2. numărul minim de mutări de clusteri, pentru fiecare pistă în parte, astfel încât platanul să devină defragmentat. 
 
Date de intrare  
Pe prima linie a fişierului de intrare defrag.in se găsește numărul natural V a cărui valoare poate fi doar 1 sau 2.  
Pe a doua linie a fișierului de intrare se găsesc două numere  naturale P și Șseparate prin tr-un spaţiu, cu 
semnificaţia din enunţ.  
A treia linie conţine un număr natural C reprezentând numărul total de clusteri ocupați de pe platan , iar pe 
fiecare din următoarele C linii se găsește câte o pereche de valori pi  şi si, 1 ≤ i ≤ C, separate printr-un spaţiu, 
reprezentând pista, respectiv sectorul unde se află fiecare cluster ocupat. 
 
Date de ieşire 
  Fișierul de ieșire este defrag.out. 
Dacă valoarea lui V este 1 atunci fişierul de ieşire va conţine pe prima linie un număr natural ce reprezintă 
numărul de piste care au toți clusterii liberi. 
Dacă valoarea lui V este 2 atunci fişierul de ieşire va conține pe prima linie P numere naturale notate  Mi,     
1 ≤ i ≤ P,  separate prin câte un singur spațiu, unde Mi reprezintă numărul minim de mutări de clusteri, dintre cei 
aflați pe pista i, astfel încât pe pista i clusterii ocupați să se găsească într-o ordine consecutivă. 
 
Restricţii şi precizări 
• 1 ≤ P ≤ 100 
• 1 ≤ S ≤ 360 
• 1 ≤ C ≤ P*S 
• pistele sunt numerotate de la 1 la P începând cu pista exterioară; 
• sectoarele sunt numerotate de la 1 la S în sensul acelor de ceasornic începând cu sectorul 1; 
• dacă o pistă are toți clusterii liberi, atunci valoarea cerută la a doua cerință este 0; 
• 20% din teste vor avea valoarea V = 1, iar 80% din teste vor avea valoarea V = 2. 
Ministerul Educaţiei și Cercetării Științifice 
Olimpiada Judeţeană de Informatică                         Clasa a IX-a 
7 martie 2015 
Sursa: ID2.c, ID2.cpp, ID2.pas  
 
_______________ 
Problema 2 – defrag  pag. 2 din 2