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

1 - ateleport 90 de puncte 
 
Marian se află în galaxia OJI-2020 și este anul 11235. În această galaxie există N planete 
diferite și M canale bidirecţionale de transport de tipul ( x, y, t) care îţi permit să te deplasezi de 
pe planeta x pe planeta y (sau invers) în t secunde.  
Dar Marian este un adevărat inginer și, pentru că i se pare foarte ineficientă această 
metodă de transporța dezvoltat un dispozitiv care îți permite teleportarea de pe o planetă x pe 
orice altă planetă y în P secunde cu cond iţia că ai putea ajunge pornind de pe planeta x pe 
planeta y folosind maxim L canale de transport.  
Acest dispozitiv este momentan doar un prototip, așa că nu îl poate folosi mai mult de K 
ori. Marian se află pe planeta 1 și te roagă să îi spui care e timpul minim necesar pentru a ajunge 
pe planeta N. 
 
Cerinţă 
Să se scrie un program care calculează timpul minim necesar pentru a ajunge pe planeta 
N pornind de pe planeta 1. 
 
Date de intrare 
Prima linie a fișierului ateleport.in va conţine 5 valori N, M, P, L, K, separate printr -un 
singur spaţiu, cu semnificaţia din enunţ. 
Pe fiecare din următoarele M linii se vor afla câte 3 valori Xi, Yi, Ti care descriu un canal 
de transport. 
 
Date de ieşire 
Fișierul de ieșire ateleport.out va conţine o singură valoare pe prima linie care reprezintă 
timpul minim necesar pentru a ajunge pe planeta N pornind de pe planeta 1. 
 
Restricţii și precizări 
● 1 < N, M ≤ 10 000; 
● 0 ≤ L, K ≤ 10; 
● 1 < Ti, P ≤ 100 000; 
● 1 < Xi, Yi ≤ N; 
● între oricare două planete există cel mult un canal; 
● pentru teste în valoare de 30 de puncte se garantează că K = 0 și toate canalele de 
comunicare au Ti = 1; 
● pentru ALTE teste în valoare de 20 de puncte se garantează că K = 0; 
● pentru ALTE teste în valoare de 20 de puncte se garantează că N ≤ 300; 
● se garantează că pentru toate testele există soluţie; 
● se acordă 10 puncte din oficiu. 
 
 
  Ministerul Educaţiei și Cercetării 
Centrul Național de Evaluare și Examinare 
Etapa județeană/sectoarelor municipiului București a olimpiadelor naționale școlare 7 martie 2020 
INFORMATICĂ Clasele XI-XII 
 
Toate subiectele sunt obligatorii. Timpul de lucru efectiv alocat probei este de 4 ore. 
Punctajul maxim cumulat este de 300 de puncte, dintre care 30 de puncte sunt acordate din oficiu. 
 

2 - partit 90 de puncte 
 
O partiție a unui număr natural n se definește ca o mulțime ordonată de numere naturale 
nenule (p1, p2, … , pk) ce conține cel puțin două elemente, îndeplinind condiția: p1+p2+...+pk=n.    
Să considerăm pentru un număr natural n toate partițiile luate în 
ordine lexicografică.  
De exemplu, pentru numărul natural n=4 există 7 partiții. Le 
scriem în ordine lexicografică într -o listă pe care o vom numi în 
continuare tabel lexicografic. 
 
Cerinţe 
Cunoscând valoarea numărului natural n: 
1. pentru un număr k dațsă se tipărească partiția de pe poziția k 
din tabelul lexicografic.  
2. pentru o partiție dată, să se calculeze numărul de ordine a ei din 
tabelul lexicografic  
 
Date de intrare 
Fișierul de intrare partit.in conține pe prima linie numărul c, reprezentând cerința de 
rezolvat. Dacă c=1, se va rezolva cerința 1, iar dacă c=2, se va rezolva cerința 2.  
Pe linia a doua se găsește valoarea lui n – numărul pe care trebuie să îl descompunem.  
Pe linia a treia, în funcție de valoarea lui c, putem avea 
 - dacă c=1, pe linia 3 se găsește un număr natural k, reprezentând un număr de ordine,  
 - dacă c=2, pe linia 3 se găsesc numere naturale separate prin câte un spațiu, 
reprezentând o partiție a numărului n.  
 
Date de ieşire 
Fișierul de ieșire partit.out va avea următorul conținut în funcție de valoarea lui c:  
- dacă c=1, pe prima linie se va tipări partiția cu numărul k în ordine lexicografică, numerele 
vor fi separate prin câte un spațiu; 
- dacă c=2, pe prima linie se va tipări numărul de ordine k al partiției citite. 
 
Restricţii și precizări 
- 1 < n < 10 000 
- 0 < k < 1017 (indiferent dacă este cazul c=1 sau c=2) 
- pentru teste în valoare de 18 puncte avem n ≤ 20 
- pentru alte teste în valoare de 36 de puncte avem n < 10 000 și k ≤ 1 000 000 
- pentru alte teste în valoare de 18 puncte avem k ≤ 2 000 000 000 
- pentru toate testele din fișierele de intrare există soluție 
- se acordă 10 puncte din oficiu
3 - RecycleBin 90 de puncte 
 
Se dă un șir de N numere întregi notat cu A. O subsecvență a șirului A este un șir Ai Ai+1 Ai+2 … Aj cu  
1 ≤ i ≤ j ≤ N, iar lungimea acestei subsecvențe este egală cu j – i + 1. O operație constă în alegerea 
unei subsecvențe din șir și ștergerea acesteia. În cadrul unei operații, lungimea subsecvenței alese 
trebuie să fie o putere de  2. În cadrul tuturor operațiilor efectuate pe șir, lungimile subsecvențelor 
șterse trebuie să fie distincte. 
 
Pentru fiecare subsecvență din șir considerăm suma elementelor ei.  Definim costul unui șir ca fiind 
maximul acestor sume, în cazul în care șirul conține cel puțin un număr pozitiv, altfel costul șirului este 
egal cu 0. 
 
Putem aplica o succesiune de operații (eventual niciuna) pe șirul A. În urma acestor operații se vor șterge 
anumite elemente din șir, obținându-se astfel o mulțime de șiruri  M={A, A’1, A’2, A’3, …}.   
 
Cerinţă 
Să se determine costul maxim posibil ce se poate obține dintr-un șir al mulțimii M. 
 
Date de intrare 
Prima linie a fișierului de intrare recyclebin.in conține un număr întreg N.  
A doua linie conține N numere întregi, separate prin câte un spațiu, reprezentând valorile șirului A. 
 
Date de ieşire 
Afișați valoarea costului maxim pe prima linie a fișierului de ieșire recyclebin.out. 
 
Restricţii și precizări 
● 1 ≤ N ≤ 1000 
● -106 ≤ Ai ≤ 106 pentru 1 ≤ i ≤ N 
● Pentru teste în valoare de 10 puncte 1 ≤ N ≤ 30 
● Pentru alte teste în valoare de 15 puncte se garantează că există o soluție cu cel mult o operație 
efectuată 
● Pentru alte teste în valoare de 20 puncte se garantează că există o soluție cu cel mult două operații 
efectuate 
● Se acordă 10 puncte din oficiu