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

1:  galeti 100 de puncte 
 
Avem 𝒏 găleți, numerotate de la stânga la dreapta cu numere de la 1 la 𝒏. Fiecare găleată conține inițial 
1 litru de apă . Capacitatea fiecărei găleți este nelimitată.  Vărsăm g ălețile una în alta , respectând o 
anumită regulă, până când toată apa ajunge în prima găleată din stânga. Vărsarea unei găleți presupune 
un anumit efort. 
Regula după care se răstoarnă gălețile este următoarea: se aleg două găleți astfel încât orice găleată 
situată între ele să fie goală. Se var să apa din găleata din dreapta în găleata din stânga. Efortul depus 
este egal cu volumul de apă din găleata din dreapta ( cea care se varsă). 
Formal, dacă notăm ai volumul de apă conținut în găleata cu numărul 𝒊, regula de vărsare a acestei 
găleți în găleata cu numărul 𝒋 poate fi descrisă astfel: 
1. 𝒋 < 𝒊  
2. 𝒂𝒌 = 𝟎 pentru orice 𝒌 astfel încât 𝒋 < 𝒌 < 𝒊 
3. efortul depus este 𝒂𝒊 
4. după vărsare 𝒂𝒋 = 𝒂𝒋 +𝒂𝒊 și 𝒂𝒊 = 𝟎 
  
Cerinţe 
 
Cunoscând numărul de găleți 𝒏 și un număr natural 𝒆, să se determine o succesiune de vărsări în urma 
căreia  toată apa ajunge în găleata cea mai din stânga și efortul total depus este exact 𝒆. 
 
Date de intrare 
 
Fișierul de intrare galeti.in conține pe prima linie două numere naturale, 𝒏 și 𝒆, în această ordine, 
separate prin spațiu . Primul număr 𝒏 reprezintă numărul de găleți. Al doilea  număr 𝒆 reprezintă efortul 
care trebuie depus pentru a vărsa toată apa în găleata din stânga. 
 
Date de ieşire 
 
Fișierul de ieșire galeti.out trebuie să  conțină 𝒏−𝟏 linii care descriu vărsările, în ordinea în care 
acestea se efectuează, pentru a vărsa toată apa în găleata din stânga cu efortul total 𝒆. Fiecare dintre 
aceste linii trebuie să conțină două numere 𝒊 și 𝒋, separate prin spațiu , cu semnificația că apa din 
găleata cu numărul 𝒊 se varsă în găleata cu numărul 𝒋. 
 
Restricţii și precizări 
 
• 𝟏 ≤ 𝒏 ≤ 𝟏𝟎𝟎.𝟎𝟎𝟎 
• 𝟏 ≤ 𝒆 ≤ 𝟓.𝟎𝟎𝟎.𝟎𝟎𝟎.𝟎𝟎𝟎 
• Se asigură că pentru datele de test există cel puțin o soluție posibilă,  
• Dacă există mai multe soluții se poate afișa oricare dintre acestea. 
• Punctajul maxim al problemei este de 100 de puncte dintre care 10 
puncte din oficiu. 
• Pentru teste in valoare de 18 puncte datele de intrare sunt cunoscute. 
Mai precis: 
Testul 0 : 𝒏 = 𝟗𝟏, 𝒆 = 𝟗𝟎 
Testul 1 : 𝒏 = 𝟑𝟎, 𝒆 = 𝟒𝟑𝟓 
Testul 2 : 𝒏 = 𝟕, 𝒆 = 𝟏𝟔 
• Pentru alte teste in valoare de 15 puncte 𝒏 ≤ 𝟗.  
 
 
 
 
 Ministerul Educaţiei Naționale 
Olimpiada de Informatică – etapa judeţeană- liceu Clasele XI-XII                                        
17 martie 2018 Sursa: ID1.cpp, ID1.c, ID1.pas
2: ramen 100 de puncte 
 
Ai deschis recent un restaurant cu specific japonez, iar lucrurile nu merg grozav. Uneori clienții 
ajung să aștepte foarte mult mâncarea comandată, iar acum crezi că ai înțeles de ce se întâmplă acest 
lucru. 
Restaurantul nu are mese, ci un singur bar foarte lung dotat cu o bandă rulantă care transportă 
porțiile de mâncare de la bucătărie la client. Barul are 500.000.000 de scaune numerotate în ordine 
crescătoare, scaunul 1 fiind cel mai apropiat de bucătărie. Uneori clienții fac noi comenzi. O comandă 
făcută la secunda T de către clientul aflat pe scaunul cu numărul P va ajunge instant la bucătărie. 
Prepararea m âncării va dura D secunde, iar apoi mâncarea va fi pusă pe bandă și va dura exact P 
secunde ca aceasta să ajungă la client. În acest timp, mâncarea va trece prin fața scaunelor 1, 2, ... P - 
1. Dacă dintr -un anumit motiv clientul nu își ridică mâncarea de pe bandă,  aceasta va continua să se 
deplaseze. În caz contrar, clientul în cauză se așteaptă ca mâncarea să ajungă la scaunul său  la 
secunda T + D + P.  
Deocamdată restaurantul servește un singur fel de mâncare: ramen. Astfel, comenzile făcute de 
clienți ajung să fie ușor interschimbabile, iar aceștia se arată foarte deschiși la a profita de pe urma 
acestui fapt.  
Se cunosc următoarele: 
▪ Un client poate avea zero sau mai multe comenzi în așteptare. 
▪ Un client care are zero comenzi în așteptare este complet inactiv. 
▪ Numărul de comenzi în așteptare al e unui client care face o comandă la secunda T va crește cu 
o unitate exact la secunda T. 
▪ Un client care are în așteptare cel pu țin o comandă va ridica de pe bandă prima porție de ramen 
care trece prin fața sa, indiferent dacă aceasta îi era destinată sau nu. Dacă va face acest lucru 
la momentul Țnumărul său de comenzi în așteptare va scădea cu o unitate exact la momentul T. 
 
Spre exemplu, analizăm situația următoare cu două comenzi: 
 
Durata de preparare a  ramenului este D = 2  secunde. Această valoare este o constantă şi  se 
aplică identic fiecărei comenzi.  
La secunda T1 = 10, persoana de pe scaunul cu numarul P1 = 8 (să o numim A) comandă o 
porție de ramen. La secunda T1 + D = 12, porția sa este pusă pe bandă. 
La secunda T2 = 16, persoana de pe scaunul cu numarul P2 = 6 (să o numim B) comandă o 
porție de ramen. La secunda T2 + D = 18, porția sa este pusă pe bandă. 
La secunda 19 porția destinată clientului A trece prin fața scaunului 6, iar clientul B, fiind el însuși 
în așteptarea unei comenzi o va lua și o va mânca. El va mânca deci la secunda 19 și va ignora 
apoi propria sa comandă, care va trece pe lângă el. 
La secunda 28 porția destinată clientului B va ajunge la clientul A, iar acesta o va lua și o va 
mânca. El va mânca deci la secunda 28. 
 
Se observă  că în general, în ciuda întârzierilor create, fiecare client va consuma exact câte porții a 
comandat.  
 
Cerințe 
 
Pentru a evalua impactul acestui obicei asupra timpilor de așteptare, ai obținut date despre toate 
comenzile date în ziua curentă. Î ți propui să afli, pentru fiecare comandă  următoarea valoare: dacă 
respectiva comandă este a NR-a făcută de clientul respectiv, care este secunda la care clientul în cauză 
va mânca pentru a NR-a oară?  
 
Date de intrare 
Fișierul de intrare ramen.in va conține pe p rima linie numărul de comenzi  N, respectiv timpul de 
preparare a unei p orții de ramen  D. Următoarele N linii vor conț ine câte o pereche de numere: T[i], 
secunda la care este fă cută a i-a comandă, respectiv P[i], numărul scaunului de la care s -a făcut a i-a 
comandă. Se garantează că timpii de comandă sunt distincți și sunt crescători în ordinea citirii lor.  
 Ministerul Educaţiei Naționale 
Olimpiada de Informatică – etapa judeţeană- liceu Clasele XI-XII                                        
17 martie 2018 Sursa: ID2.cpp, ID2.c, ID2.pas 
 
 
Date de ieșire 
Fișierul de ieșire ramen.out va conține N linii, fiecare conținând  o singură valoare naturală : a i-a 
valoare va reprezenta răspunsul cerut pentru a i-a comandă în ordinea citirii.  
 
Restricții și precizări 
1. 𝟏 ≤ 𝑵 ≤ 𝟏𝟎𝟎.𝟎𝟎𝟎 
2. 𝟎 ≤ 𝑫,𝑻[𝒊] ≤ 𝟓𝟎𝟎.𝟎𝟎𝟎.𝟎𝟎𝟎, pentru orice  𝟏 ≤ 𝒊 ≤ 𝑵 
3. 𝟏 ≤ 𝑷[𝒊] ≤ 𝟓𝟎𝟎.𝟎𝟎𝟎.𝟎𝟎𝟎, pentru orice 𝟏 ≤ 𝒊 ≤ 𝑵 
4. Se garantează că 𝑻[𝒊] < 𝑻[𝒊+𝟏], pentru orice 𝟏 ≤ 𝒊 < 𝑵. 
5. Pentru teste în valoare totală de 22 de puncte, se garantează în plus faţă de restricţiile generale că 
𝑵 ≤ 𝟐𝟎𝟎𝟎 şi 𝑫,𝑻[𝒊],𝑷[𝒊] ≤ 𝟓𝟎𝟎𝟎 
6. Pentru alte teste în valoare totală de 25 de puncte, se garantează în plus faţă de restricţiile generale 
că 𝑵 ≤ 𝟐𝟎𝟎𝟎. 
 
Exemple 
 
ramen.in ramen.out Explicații şi comentarii 
2 2 
10 8 
16 6 
 
28 
19 
 

3:  aquapark 100 de puncte 
 
Pentru a atrage turiștii, primăria unui oraș a hotărât că va construi un parc acvatic imens cu n piscine. 
Parcul va avea o zonă acoperită și va fi înconjurat de un spațiu deschis pentru activități în aer liber. 
Zona închisă va fi acoperită de o singură clădire de forma unui poligon, iar piscinele vor fi proiectate în 
vârfurile poligonului și vor putea comunica între ele prin m căi de acces care nu s e vor intersecta. Căile 
de acces între două piscine pot fi de tipul 1: canal umplut cu apă în interiorul clădirii, sau de tipul 2: o 
alee în afara clădirii. 
În exemplul alăturat prin linie punctată se delimitează partea 
acoperită a parcului. Avem 5 piscine , există 6 căi de acces: 
(1,2), (2,5), (1,4), (1,3), (3,4), (3,5), dintre care 2 sunt canale 
(tipul 1): (1,3) și (1,4), respectiv 4 sunt alei  (tipul 2): (1,2), 
(2,5), (3,4) și (3,5). 
Un alt proiect ce păstrează aceleași căi de acces , dar diferă 
prin tipul acestora, este să construim 4 canale: (1,2), (3,4 ), 
(3,5), (2,5) respectiv 2 alei: (1,3), (1,4). 
În total putem construi 8 proiecte distincte cu aceste căi de 
acces. Două proiecte se consideră distincte dacă există cel puțin o cale de acces ce are tipuri d iferite pe 
cele două proiecte. 
Cerinţe 
Cunoscând căile de acces între piscine, să se determine una dintre cerințele următoare: 
1. - o modalitate de construire a căilor de acceșprecizând tipul fiecăreia; 
2. - numărul proiectelor distincte. 
 
Date de intrare 
Fișierul de intrare aquapark.in conține pe prima linie trei numerele separate prin câte un spațiu c n m 
reprezentând în această ordine tipul cerinței, numărul piscinelor respectiv numărul căilor de acces. 
Următoarele m linii conțin câte două numere x și y, reprezentând o cale de acces între piscina x și 
piscina y. 
 
Date de ieşire 
Fișierul de ieșire aquapark.out va conține în funcție de valoarea lui c următoarele informații: 
- dacă c=1: pe m linii se vor tipări câte trei numere separate prin câte un spațiu x y țsemnificând 
că  între piscina x și piscina y există o cale de acces de tipul t (1-canal, 2-alee). Fiecare muchie citită din 
fișierul de intrare va trebui să apară exact o dată în fișierul de ieșire, indiferent de ordinea citirii. 
- dacă c=2: se va tipări un singur număr ce va semnifica numărul proiectelor distincte modulo 666013. 
Restricţii și precizări 
• 1 ≤ n ≤ 70000 
• 1 ≤ m ≤ 100000 
• Între două piscine există cel mult o cale de acces 
• Nu există o cale de acces de la o piscină la ea însăşi 
• Se asigură că pentru datele de test există cel puțin o soluție, 
• Dacă există mai multe soluții se poate afișa oricare dintre acestea. 
• Pentru teste în valoare de 16 puncte n,m ≤ 15 
• Pentru alte teste în valoare de 49 de puncte n ≤ 1000, m ≤ 1500 
• Punctajul maxim al problemei este de 100 de puncte dintre care 10 puncte din oficiu. 
 
 
 
Ministerul Educaţiei Naționale 
Olimpiada de Informatică – etapa judeţeană- liceu Clasele XI-XII 
17 martie 2018 Sursa: ID3.cpp, ID3.c, ID3.pas