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

- elicoptere 100 puncte 
 
Arhipelagul Zopopan este format din n insule de formă  triunghiulară numerotate de la 1 la n. Fiecare 
insulă este localizată prin coordonatele carteziene ale vârfurilor. 
Administrația dorește să cumpere elicoptere pentru a re aliza transportul între insule. Un elicopter va putea 
să asigure o rută între două insule pe distanța minimă obținută pe orizontală sau verticală (paralel cu axele de 
coordonate). În plus , datorită capacității rezervorului o astfel de rută nu poate să depășească o valoare k – număr 
natural. Elicopterele parcurg rutele în ambele sensuri. 
Investiția trebuie să îndeplinească următoarele condiții: 
1. Numărul de elicoptere cumpărate să fie minim. 
2. Numărul de perechi de insule î ntre care se poate realiza transportu l, folosind unul sau mai multe 
elicoptere să fie maxim. 
3. Suma lungimii tuturor rutelor să fie minimă. 
 
Cerinţă 
 
Să se scrie un program care pentru n, k şi coordonatele vârfurilor insulelor cunoscute, determină: 
1. numărul minim de elicoptere ce vor fi cumpărate de administraţie; 
2. numărul perechilor neordonate de insule între care se poate realiza transportul prin elicoptere  direct sau 
indirect; 
3. suma distantelor parcurse de toate elicopterele cumpă rate (distanța parcursă de un elicopter se consideră 
distanța dintre insulele între care acesta asigură transportul). 
Date de intrare  
 
Fişierul de intrare elicoptere.in conţine pe prima linie  o valoare v ce poate fi 1, 2, sau 3, în funcţie de 
cerinţa ce va fi rezolvată, pe l inia a doua numerele naturale n şi k separate printr-un spaţiu, cu semnificaţia de mai 
sușiar pe următoarele n linii se află câte şase numere naturale x1, y1, x2, y2, x3 și y3 separate prin spațiu 
reprezentând coordonatele celor trei vârfuri ale insulelor în formatul (abscisă, ordonată). 
 
Date de ieşire 
 
Dacă valoarea lui v este 1 atunci fişierul de ieşire elicoptere.out va conţine pe prima linie numai numărul 
minim de elicoptere, ce vor fi cumpărate de administraţie. 
Dacă valoarea lui v este 2 atunci fişierul de ieşire elicoptere.out va conţine pe prima linie numai numărul 
maxim de perechi de insule între care se poate realiza transportul prin elicoptere. 
Dacă valoarea lui v este 3 atunci fişierul de ieşire elicoptere.out va conţine pe prima linie suma minimă a 
lungimii rutelor parcurse de elicoptere. 
Restricţii şi precizări 
 
• 1 ≤ n ≤ 100; 
• 1 ≤ k ≤ 1000; 
• coordonatele vârfurilor insulelor sunt numere naturale 0 ≤ xi , yi ≤ 106; 
• orice două insule nu au puncte comune; 
• la cerința 2, dacă se poate ajunge din insula A în insula B atunci evident că se poate ajunge și din B în A, 
deci perechea formată din A și B se numără o singură dată; 
• Distanța dintre două insule poate fi şi număr real. La cerinț a 3 r ezultatul se cere cu o aproximaț ie de 
0.001, adică rezultatul notat cu R se consideră corect , dacă faţă de rezultatul  comisiei C îndeplineşte 
condiţia  
|R-C|<0.001.   Ministerul Educaţiei Naționale și Cercetării Științifice 
Olimpiada de Informatică – etapa judeţeană Clasele XI-XII-a 
12 martie 2016 Sursa: ID1.cpp, ID1.c, ID1.pas 
 
• Pentru a calcula şi afișa un număr real x cu o precizie cât mai mare vă recomandăm folosirea tipului 
double  
• Pentru rezolvarea corectă a cerinței 1 se acordă 20% din punctaj; 
• Pentru rezolvarea corectă a cerinței 2 se acordă 40% din punctaj; 
• Pentru rezolvarea corectă a cerinței 3 se acordă 40% din punctaj. 
 

2  summax                                                                                                          100 puncte 
 
Avem o matrice triunghiulară cu n linii, cu elemente numere întregi. În această 
matrice putem construi un traseu după următoarea regulă: 
- primul element al traseului este elementul a1,1 
- dacă elementul ai,j aparţine traseului, atunci următorul element al 
traseului poate fi doar ai+1,j sau ai+1,j+1 , pentru orice 1≤j≤i<n. 
Traseul se va codifica cu numerele de ordine ale coloanelor, parcurgând liniile 
de la 1 la n. Valoarea traseului este egală cu suma elementelor ce îl formează. 
Traseul evidenţiat în exemplul din dreapta are valoarea 5+4+6+5+4=24, şi se 
codifică cu 1,2,3,3,4. 
Fie mulţimea tuturor traseelor de valoare maximă generate în ordine 
lexicografică și numerotate. Pentru exemplul alăturat avem șase trasee de lungime 
maximă: 
traseul 1. 1 1 1 1 2     (5+2+7+6+4=24) 
traseul 2. 1 1 1 2 2     (5+2+7+6+4=24) 
traseul 3. 1 2 2 2 2     (5+4+5+6+4=24) 
traseul 4. 1 2 3 3 4     (5+4+6+5+4=24) 
traseul 5. 1 2 3 4 4     (5+4+6+5+4=24) 
traseul 6. 1 2 3 4 5     (5+4+6+5+4=24) 
Cerinţă  
Cunoscând dimensiunea și elementele unei matrice triunghiulare, respectiv două numere naturale st şi dr (st≤dr), se 
cere să se determine: 
1. Numărul total al traseelor de valoare maximă. În cazul în care această valoare depășește 2000000000, se va 
tipări valoarea 2000000001; 
2.  Traseele cu numerele de ordine st,st+1, ... ,dr. 
 
Date de intrare 
Fişierul summax.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 trei numere naturale n, st şi dr, separate prin spaţiu. Următoarele n linii conțin câte o linie 
a matricei triunghiulare astfel: linia i conține i elemente, și anume valorile ai,1 ai,2 ... ai,i pentru orice 1≤i≤n . 
 
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 summax.out se va scrie un singur număr natural ce reprezintă numărul traseelor 
de lungime maximă. 
Dacă valoarea lui v este 2, se va rezolva numai punctul 2 din cerință. 
În acest caz, în fişierul de ieşire summax.out se vor tipări pe câte o linie n numere naturale separate prin spațiu, 
reprezentând codificările traseelor de valoare maximă cu numerele de ordine sțst+1, ... ,dr. 
  
Restricții și precizări 
• 1 ≤ n ≤ 2000 
• 1 ≤ st ≤ dr ≤ 2 000 000 000 
• 1 ≤ dr – st ≤ 1000 
• elementele matricei triunghiulare sunt numere naturale strict pozitive 
• valoarea maximă a traseului nu depășește 1 000 000 000 
 
Ministerul Educaţiei Naționale și Cercetării Stiintifice 
Olimpiada de Informatică – etapa judeţeană-liceu Clasa a XI-XII 
12 martie 2016 Sursa: ID2.cpp, ID2.c, ID2.pas