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

1  armonica 100 puncte 
 
Spunem că trei numere 𝑎, 𝑏, 𝑐 sunt în progresie armonică dacă 𝑏 este media armonică a numerelor 𝑎 și 𝑐, adică  
 
𝑏 = 2
1
𝑎 + 1
𝑐
= 2𝑎𝑐
𝑎 + 𝑐 
 
Cerinţe 
 
Cunoscând  un număr natural 𝑏 să se determine toate perechile de numere naturale (𝑎, 𝑐) pentru care 𝑎, 𝑏, 𝑐 sunt în 
progresie armonică. 
 
Date de intrare 
 
Fișierul de intrare armonica.in conține pe prima linie un număr natural 𝑏.  
 
Date de ieşire 
 
Fișierul de iesire armonica.out va conține pe prima linie un număr natural 𝑛 reprezentând numărul de perechi 
de numere naturale (𝑎, 𝑐) pentru care 𝑏 este media armonică. Pe următoarele 𝑛 linii se vor afișa perechile de 
numere cerute. Astfel fiecare din tre următoarele 𝑛 linii vor conține căte două numere 𝑎 și 𝑐 separate prin tr-un 
spațiu cu semnificația că 𝑏 este medie armonică a numerelor 𝑎 și 𝑐.  
 
Restricţii și precizări 
 
• 1 ≤ 𝒃 ≤ 1 000 000 000; 
• Pentru teste în valoare de 40 de puncte avem 𝒃 ≤ 1 000 000; 
• Perechile de numere din fișierul de ieșire pot fi afișate în orice ordine; 
• Dacă 𝒃 este medie armonică între două numere diferite  𝒂 și 𝒄 atunci perechile (𝒂, 𝒄) și (𝒄, 𝒂) sunt 
considerate soluții distincte. 
• Problema va fi evaluată pe teste în valoare de 90 de puncte. 
• Se vor acorda 10 puncte din oficiu.
2 ninjago                                                 100 puncte 
După ce eroii ninja l-au învins pe Nadakhan, de ziua celor dispăruți Zane trebuia să păzească cele n păpuși din 
muzeu.  Între aceste păpuși există  m coridoare pe care se poate circula în ambele sensuri. Se garantează faptul că pe 
cele m coridoare Zane poate ajunge la fiecare dintre cele n păpuși. Skulkiu, având la dispoziție 5 tipuri de obstacole 
A, B, C, D, E, încearcă să -l opreasc ă pe Zane  punând pe  fiecare coridor câte 4 obstacole. Zane poate distruge 
obstacolele de tip A, B, C și D, dar nu poate să distrugă obstacolele de tipul E. Pentru a distruge un obstacol de tipul 
A arma lui Zane are nevoie de 1 unitate de energie, pentru a distruge un obstacol de tipul B de 2 unități de energie, 
pentru a distruge un obstacol de tipul C de 3 unități de energie, iar pentru a distruge un obstacol de tipul D de 4 unități 
de energie. Datorită dispozitivului cu care Skulkiu amplasează  obstacolele pe coridor, cele patru obstacole de pe 
acelaşi coridor au o adâncime din ce în ce mai mare, ceea ce implică faptul că pentru a distruge al doilea obstacol 
amplasat pe coridor este nevoie de 5 ori mai mult ă energie decât cea obișnuită, pentru a distruge cel de-al treilea 
obstacol amplasat pe coridor este nevoie de 25 ori mai multă energie decât cea obișnuită, iar pentru a  distruge al 
patrulea obstacol amplasat pe acelaşi coridor este nevoie de 125 de ori mai mult ă energie decât cea obișnuită.  
Indiferent de sensul de parcurgere al coridorului de către Zane pentru a înlătura obstacolele, energia consumată este 
aceeaşi, aceasta depinzând doar de ordinea în care au fost amplasate obstacolele de către Skulkiu. Zane nu va înlătura 
obstacolele de pe toate coridoarele ci doar strictul necesa r pentru a avea acces la fiecare păpușă. Zane dorește să-i 
lase pe ceilalți ninja să se antreneze așa că face în așa fel încât ajutorul pentru distrugerea obstacolelor de tip E să fie 
minim și apoi ca el să utilizeze un număr minim de unități de energie. Pentru coridoarele pe care se află obstacole de 
tip E Zane consumă energie doar pentru obstacolele de tip A, B, C şi D. Inițial Zane se află lângă păpușa 1. 
Cerințe 
1) Precizați la câte dintre cele n păpuși poate ajunge Zane înainte de a cere ajutorul celorlalți ninja. 
2) Precizați pentru eliberarea câtor coridoare trebuie să ceară ajutor extern pentru a reuși să ajungă la toate cele 
n păpuși și câte obstacole de tip E sunt în total pe aceste coridoare. 
3) Precizați care este numărul minim de unități de energie utilizate. 
Date de intrare 
Fişierul ninjago.in conţine pe prima linie un număr natural  v care poate avea doar valorile  1, 2 sau 3 
reprezentând cerința care va fi rezolvată. Fișierul ninjago.in conține pe a doua  linie numerele naturale n și m 
separate printr-un spațiu, iar pe următoarele m linii pentru fiecare coridor două numere naturale separate printr-un 
spațiu reprezentând cele două pă puși între care se circulă pe coridorul respectiv urmate de un spaţ iu și patru litere 
corespunzătoare celor patru tipuri de obstacole în ordinea în care Skulkiu le-a amplasat pe coridorul respectiv. Între 
cele patru litere nu se află nici un spaţiu. 
Date de ieșire 
Dacă valoarea lui v este 1 atunci fișierul de ieșire ninjago.out va conține pe prima linie numai numărul 
păpușilor la care poate ajunge Zane înainte de a cere ajutorul celorlalți ninja. 
Dacă valoarea lui v este 2 atunci fișierul de ieșire ninjago.out va conține pe prima linie numărul de coridoare 
pe care nu le poate elibera singur și pe a doua linie numărul total de obstacole de tip E de pe aceste coridoare. 
 Dacă valoarea lui v este 3 atunci fișierul de ieșire ninjago.out va conține pe prima linie numai numărul 
minim de unități de energie utilizate. 
Restricții și precizări 
• 1 ≤  N,M  ≤ 31200; 
• Pentru rezolvarea corectă a primei cerințe se acordă 20 de puncte; 
• Pentru rezolvarea corectă a celei de-a doua cerințe se acordă 40 de puncte; 
• Pentru rezolvarea corectă a celei de-a treia cerințe se acordă 30 de puncte. 
• Problema va fi evaluată pe teste în valoare de 90 de puncte. 
• Se vor acorda 10 puncte din oficiu. 
 
  Ministerul Educaţiei Naționale și Cercetării Stiintifice 
Olimpiada de Informatică – etapa judeţeană-liceu Clasele a XI-XII 
11 martie 2017 Sursa: ID2.cpp, ID2.c, ID2.pas
3 permutare 100 p 
 
Definim o permutare dublă de ordin n ca fiind un șir  format din primele 2n numere naturale nenule : 
 (a1, a2, ... , an, an+1, an+2, ... , a2n). Această permutare dublă este de trei ori în creștere, 
dacă sunt adevărate următoarele trei proprietăți: 
1. secvența formată din primele n elemente este crescătoare: a1<a2< ... < an 
2. secvența formată din ultimele n elemente este crescătoare: an+1<an+2< ... < a2n 
3. perechile ordonate formate din elementele aflate pe poziții identice ale celor două secvențe sunt de 
asemenea în ordine crescătoare: a1<an+1, a2<an+2, ... , an<a2n. 
De exemplu permutarea (1,3,4,2,5,6) este o permutare dublă de ordin 3, de trei ori în creștere, pentru că 
secvențele (1,3,4) și (2,5,6) formează șiruri crescătoare, iar toate perechile formate din elementele de pe 
poziții identice: (1,2), (3,5), (4,6) formează deasemenea șiruri crescătoare. 
Următoarele permutări duble nu au proprietatea de trei ori în creștere: 
(1,4,3,2,5,6) –secvența (1,4,3) nu este crescătoare, 
(1,3,4,2,6,5) - secvența (2,6,5) nu este crescătoare, 
(1,4,5,2,3,6) –perechea (4,3) nu este crescătoare. 
Pentru simplificare în continuare permutarea dublă de trei ori în creștere se va numi permutare. 
Vom considera toate permutările de ordin n ordonate lexicografic, numerotate începând cu 1. Tabelul de mai 
jos conține datele pentru n=3: 
poziție permutare 
1 1 2 3 4 5 6 
2 1 2 4 3 5 6 
3 1 2 5 3 4 6 
4 1 3 4 2 5 6 
5 1 3 5 2 4 6 
Există două tipuri de întrebări: 
1. Ce permutare se află pe o poziție dată?  
2. Pe ce poziție se află o permutare dată? 
Prima întrebare este codificată astfel: 1 n p și se compune din valorile  
1 – tipul întrebării,  
n – ordinul permutării,  
p – poziția permutării cerute. 
A doua întrebare este codificată astfel: 2 n a1 a2 ... a2n și se compune din valorile  
2 – tipul întrebării,  
n – ordinul permutării,  
a1 a2 ... a2n – elementele permutării. 
 
Exemple 
Întrebarea  1 3 2 înseamnă: 
“Ce permutare de ordin 3 se află pe poziția 2 în ordine lexicografică?”  și are răspunsul: 1 2 4 3 5 6. 
Întrebarea  2 3 1 3 5 2 4 6  înseamnă: 
“Pe ce poziție se află permutarea de ordin 3: 1 3 5 2 4 6?” și are răspunsul: 5. Ministerul Educaţiei Naționale 
Olimpiada de Informatică – etapa judeţeană-liceu Clasele XI-XII                                        
11 martie 2017 Sursa: ID3.cpp, ID3.c, ID3.pas 
 
Cerința 
Să se răspundă corect la un set de întrebări. 
 
Date de intrare 
Fișierul permutare.in conține pe fiecare linie câte o întrebare de orice tip. 
 
Date de ieșire 
Fișierul permutare.out va conține pe câte o linie câte un răspuns la fiecare întrebare din fișierul de 
intrare, în ordinea întrebărilor. 
 
Restricții și precizări 
- 2 < n < 1 000; 
- 0 < p <= 1 000 000 000 (în cazul întrebărilor de tip 1); 
- răspunsul la întrebările de tip 2 este <=  1 000 000 000; 
- fișierele de intrare vor conține cel mult 2000 de întrebări; 
- pentru teste în valoare de 20 de puncte numărul de întrebări va fi 1000 iar numerele de ordine ce 
intervin în calcule vor fi mai mici decât 5000; 
- pentru teste în valoare de 30 de puncte întrebările vor fi de tipul 1; 
- pentru teste în valoare de 30 de puncte întrebările vor fi de tipul 2; 
- pentru teste în valoare de 30 de puncte întrebările vor fi mixte. 
- problema va fi evaluată pe teste in valoare de 90 de puncte. 
- se vor acorda 10 puncte din oficiu.