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

2 - Parc 100 puncte 
 
Un parc de formă dreptunghiulară este format  din zone pietonale şi 
piste de biciclete.  Reprezentând harta parcului într -un sistem cartezian, cu 
coordonata colţului stânga-jos (0,0), pistele de biciclete sunt  reprezentate prin 
dungi orizontale sau verticale colorate cu gri, iar zonele pietonale  au culoarea 
albă, ca în figura din dreapta. 
Vizitatorii parcului se pot plimba liber pe zon ele pietonale în orice 
direcţie, însă pistele de biciclete se vor traversa , în linie dreaptă ,  paralel cu 
axele. În figura alăturată avem un parc de dimensiuni 10 x 8, cu piste de 
biciclete verticale între 2 şi 4 respectiv 5 şi 8, şi  orizontale  între 0 şi 1 
respectiv între 2 şi 4. Gigel se află în punctul A(1 , 1) şi poate sa ajungă pe 
drumul cel mai scurt la  prietenul lui , în punctul B(8 , 7) deplasându-se astfel: porneşte din punctul ( 1, 1) şi 
parcurge un traseu format din segmente cu extremităţile în punctele de coordonate (1.5 , 2) (1.5, 4) (2 , 5) (4 , 5) 
(5 , 7) şi în final ajunge în punctul de coordonate (8 , 7).  
Lungimea totală a drumului va fi aproximativ 11.4721359. 
 
Cerinţă 
Cunoscând dimensiunile parcului, coordonatele lui Gigel, coordonatele prietenului lui şi poziţiile pistelor 
de biciclete, să se calculeze lungimea drumului minim şi numărul drumurilor distincte de lungime minimă. 
 
Date de intrare 
Fişierul parc.in conţine pe prima linie două numere naturale Xparc şi Yparc separate prin spaţiu, 
reprezentând dimensiunile parcului în direcţiile Ox respectiv Oy. Linia a doua va conţine patru numere separate 
prin spaţiu xG, yG, xpr şi ypr ce reprezintă coordonatele lui Gigel şi coordonatele  prietenului lui. Linia a treia va 
conţine un număr natural m, reprezentând numărul pistelor verticale. Următoarele m linii vor conţine perechi de 
valori de pe axa Ox ce delimitează câte o pistă de biciclete verticală. Următoarea linie va conţine un număr natural 
n, reprezentând numărul pistelor orizontale. Următoarele n linii vor conţine perechi de valori de pe axa Oy ce 
delimitează câte o pistă de biciclete orizontală. 
 
Date de ieşire 
Fişierul parc.out va conţine pe prima linie lungimea minimă a drumului cerut de problemă , un număr 
real. Linia a doua va conţine numărul drumurilor minime distincte, un număr natural.  
 
Restricţii şi precizări 
- 0  xG, xpr   Xparc 30 000,  0  yG, ypr   Yparc  30 000; 
- 0 < m, n < 2000; 
- perechile de numere naturale ce definesc o pistă nu sunt ordonate; 
- pistele orizontale, şi cele verticale nu sunt ordonate în fişierul de intrare; 
- două piste de aceeaşi direcţie nu se suprapun; 
- Gigel şi prietenului lui sunt pe zone pietonale (incluzând şi marginile acestora); 
- două drumuri sunt distincte dacă diferă prin cel puţin un punct; 
- numărul de drumuri distincte nu va depăşi 1 000 000 000; 
- lungimea drumului din fişierul de ieşire este un număr real ce se va accepta cu eroare maxima de 0.01; 
- nu se admite formatul ştiinţific pentru afişarea numerelor reale;  
- prima cerinţă valorează 40% din punctaj, iar a doua valorează 60% din punctaj.
1 - blis  100 puncte 
 
Se consideră un şir de biţi şi un număr natural K. Şirul se împarte în secvenţe astfel încât fiecare bit din 
şir să aparţină unei singure secvenţe şi fiecare secvenţă să aibă lungimea cel puţin 1 şi cel mult K. 
După împărţire, fiecare secvenţă de biţi se converteşte în baza 10, obţinându -se un şir de valori 
zecimale. De exemplu, pentru şirul de biţi  1001110111101010011 şi K = 4, se poate obţine 1 
0011 101 111 0 1010 011 , apoi în baza 10: 1, 3, 5, 7, 0, 10, 3 . O altă împărţir e 
poate fi 1 00 1 1 10 11 110 1010 011, adică 1, 0, 1, 1, 2, 3, 6, 10, 3. 
 
Cerinţă 
Scrieţi un program care: 
• determină valoarea maximă (în baza 10) care se poate obţine dintr-o secvenţă de cel mult K biţi 
• împarte şirul iniţial în secvenţe de cel mult K biţi astfel încât şirul  zecimal obţinut să conţină un 
subşir strict crescător de lungime maximă posibilă. 
 
Date de intrare 
Prima linie a fişierului de intrare blis.in conţine numărul natural K, iar pe linia a doua se află şirul 
de biţi, şirul neconţinând spaţii. 
 
Date de ieşire 
Fişierul de ieşire blis.out va conţine pe prima linie un număr natural reprezentând valoarea 
maximă care se poate obţine dintr -o secvenţă de cel mult K biţi, iar pe linia a doua un singur număr 
natural reprezentând lungimea maximă a subşirului strict crescător care se poate obţine din şirul de biţi 
prin împărţirea sa în secvenţe de cel mult K biţi. 
 
Restricţii şi precizări 
• 3 ≤ lungimea şirului de biţi ≤ 100 000 
• pentru 70% din teste, lungimea şirului de biţi ≤ 1000 
• 1 ≤ K ≤ 30 
• Un subşir se obţine dintr-un şir prin eliminarea a zero, unul, două sau mai multe elemente; 
• O secvenţă este formată din elemente aflate pe poziţii consecutive în şir; 
• Pentru rezolvarea corectă a primei cerinţe se acordă 20% din punctaj, iar pentru rezolvarea corectă 
a celei de-a doua se acordă 80%.