Documente Academic
Documente Profesional
Documente Cultură
Responsabili:
Budulan S, tefania, Niculescu Irina, Sevastian Denisse,
Vasilescu Eugen, Vis, an Radu
0.1 Modificri
cuprins
0.1 Modificari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1 Problema 1: Permutari 3
1.1 Enunt, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Date de intrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 Date de ies, ire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Restrict, ii s, i precizari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Testare s, i punctare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.6 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6.1 Exemplu 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.6.2 Exemplu 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 Problema 2: Pokemoni 5
2.1 Enunt, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Date de intrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Date de ies, ire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4 Restrict, ii s, i precizari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.5 Testare s, i punctare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.6.1 Exemplu 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1
CUPRINS 2
3 Problema 3: Patrula 7
3.1 Enunt, . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.2 Date de intrare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.3 Date de ies, ire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.4 Restrict, ii s, i precizari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.5 Testare s, i punctare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6.1 Exemplu 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6.2 Exemplu 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4 Punctare 10
4.1 Checker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5 Format arhiva 11
6 Links 12
problema 1: permutri 3
1 problema 1: permutri
1.1 Enunt,
Datele se vor citi din fis, ierul permutari.in. Prima linie va cont, ine numarul de
cuvinte N, iar urmatoarele N linii vor cont, ine cte un cuvnt.
1.6 Exemple
1.6.1 Exemplu 1
Exemplu 1
permutari.in permutari.out Explicat, ie
Avem urmatoarele constrngeri:
c apare naintea lui b
5 zyxwvutsrqpomlcnbkjigfedah
l apare naintea lui c
cal
c apare naintea lui n
bal
a apare naintea lui h
bac
Trebuie deci sa afis, a m orice permutare a
banca
literelor care sa respecte aceste constrngeri.
banchet
Una dintre multele posibilitat, i este cea oferita
ca exemplu.
1.6.2 Exemplu 2
Exemplu 2
permutari.in permutari.out Explicat, ie
Avem urmatoarele constrngeri:
6 Imposibil x apare naintea lui y
ax a apare naintea lui b
ay y apare naintea lui z
by b apare naintea lui c
bz z apare naintea lui x
cz Afirmat, iile 1, 3 si 5 nu pot fi ndeplinite
cx simultan, deci ne este imposibil sa gasim o
solut, ie valida.
problema 2: pokemoni 5
2 problema 2: pokemoni
2.1 Enunt,
Din cauza temelor mult prea grele de la PA, Boolanel s-a lasat de facultate s, i s-a
decis sa devina un maestru pokemon.
Acesta se afla n oras, ul 1 s, i det, ine un numar de P pokemoni, cu ajutorul carora
trebuie sa ajunga ct mai repede la o arena, aflata n oras, ul N.
Drumul pna la destinat, ie nu este unul us, or, nsa Boolanel se poate folosi de
pokemonii sai pentru a depas, i obstacolele ntmpinate. Astfel, pe fiecare drum
parcurs n calatoria sa spre arena are nevoie de un pokemon care sa il nsot, easca.
Boolanel cunoas, te pentru fiecare drum existent s, i pentru fiecare pokemon care este
timpul de parcurgere al drumului daca este insot, it de pokemonul respectiv.
El este liber sa is, i aleaga la nceput ce pokemon il va insot, i, iar pe parcursul
calatoriei are voie sa is, i schimbe pokemonul care l insot, es, te de maxim K ori. Aceste
schimbari pot fi efectuate doar n oras, e.
Boolanel ar dori sa afle care este cel mai scurt timp n care poate ajunge la arena,
dar are nevoie de ajutorul vostru pentru a gasi raspunsul.
2.6 Exemple
2.6.1 Exemplu 1
Exemplu 1
pokemoni.in pokemoni.out Explicat, ie
Avem un numar de 4 oras, e, 5 drumuri ntre ele s, i 2 poke-
moni. Ne dorim sa ajungem de la oras, ul 1 la oras, ul 4,
4523 schimbnd de maxim 3 ori pokemonul ce ne nsot, es, te.
1213 Drumul minim este urmatorul:
1355 4 Pornim cu pokemonul 1 s, i mergem in oras, ul 2
2331 timp petrecut = 1
2455 Schimbam cu pokemonul 2 s, i mergem in oras, ul 3
3442 timp petrecut = 1
Pastram pokemonul 2 s, i mergem in oras, ul 4
timp petrecut = 2
Astfel, timpul total petrecut pe drum este 4. Cu toate ca
mai avem la dispozit, ie o schimbare, observam ca aceasta
nu ne ajuta.
problema 3: patrula 7
3 problema 3: patrula
3.1 Enunt,
Boolanel a reus, it sa ajunga la arena in timpul cel mai scurt cu ajutorul vostru.
Din pacate, el nu este nici un bun strateg, as, a ca nu a ales cei mai buni pokemoni pe
care i putea folosi n cadrul luptelor din arena s, i a pierdut. Cu toate acestea, a decis
ca ar fi o idee buna sa fure premiul s, i dores, te sa ajunga cu el ct mai repede acasa.
Arena se afla n orasul N, iar casa lui se afla in oras, ul 1. Boolanel va folosi
ntotdeauna una dintre cele mai scurte cai ntre oras, ul N si orasul 1, timpul de
deplasare ntre 2 oras, e vecine fiind de o unitate de timp (nu va mai fi nsot, it de
pokemonii sai).
Singurul obstacol pe care l mai are de depas, it este faptul ca polit, is, tii sunt pe
urmele sale. Se s, tie ca aces, tia patruleaza toate strazile ntunecate s, i, daca l vor prinde
pe Boolanel, l vor aresta. Init, ial, toate strazile sunt ntunecate.
Boolanel are posibilitatea de a aprinde luminile dintr-un oras, ales de el s, i, astfel,
toate strazile care leaga oras, ul respectiv de un alt oras, vecin devin luminate, deci nu
vor mai fi patrulate de polit, is, ti.
Scopul sau este sa aleaga oras, ul n care sa aprinda luminile, n as, a fel nct
numarul mediu de strazi luminate pentru toate caile de lungime minima posibile
sa fie maxim.
Pentru a afla ce l as, teapta pe drum s, i a putea lua cele mai bune alegeri, Boolanel
va roaga sa l mai ajutat, i cu urmatoarele informat, ii:
Datele de intrare se vor citi din fis, ierul patrula.in. Acesta are urmatorul format:
Prima linie cont, ine valorile N s, i M, reprezentnd numarul de oras, e, respectiv
numarul de strazi existente.
Urmatoarele M linii cont, in cte 2 numere X s, i Y, cu semnificat, ia ca exista o strada
ntre oras, ul X s, i oras, ul Y.
n fis, ierul patrula.out se va scrie pe prima linie numarul total de cai minime de
la oras, ul N la oras, ul 1.
problema 3: patrula 8
3.6 Exemple
3.6.1 Exemplu 1
Exemplu 1
patrula.in patrula.out Explicat, ie
44 2 Exista 2 cai de lungime minima ntre 4 s, i 1, s, i anume 4-2-1,
12 1.000 respectiv 4-3-1. Observam ca daca alegem sa aprindem lumi-
24 nile din oras, ul 2, avem 2 strazi luminate pe calea 4-2-1,
13 respectiv 0 strazi luminate pe calea 4-3-1.
34 Media este (2 + 0)/2 = 1. Aceeas, i medie se obt, ine s, i daca ale-
gem sa aprindem luminile din oras, ul 1, avnd o strada lumi-
nata pe calea 4-2-1 s, i una pe calea 4-3-1, media fiind
(1 + 1)/2 = 1.
problema 3: patrula 9
3.6.2 Exemplu 2
Exemplu 1
patrula.in patrula.out Explicat, ie
4 Avem 4 cai de lungime minima: 5-4-2-1 (folosind prima
56
2.000 strada de la 5 la 4), 5-4-2-1 (folosind a doua strada de la 5 la
12
4), 5-4-3-1 (folosind prima strada de la 5 la 4), 5-4-3-1
13
(folosind a doua strada de la 5 la 4). Pentru a obt, ine media
24
maxima trebuie sa luminam orasul 4 ce ne va lumina cte 2
34
strazi pe fiecare din cele 4 drumuri minime. Media va fi
45
(2 + 2 + 2 + 2) / 4 = 2. Daca am fi ales orice alt oras, media ar
45
fi fost doar 1.
punctare 10
4 punctare
Punctajul este distribuit astfel:
Problema 1: 35p
Problema 2: 40p
Problema 3: 50p
7.5 puncte vor fi acordate pentru coding style
7.5 puncte vor fi acordate pentru comentarii s, i README
Punctajul pe README, comentarii s, i coding style este condit, ionat de obt, inerea a
unui punctaj strict pozitiv pe cel put, in un test.
Tema valoreaza 125 de puncte, restul de 15 puncte fiind acordate bonus pentru
rezolvarea tuturor taskurilor. Bonusul se mparte ntre problemele 2 si 3. n total se
pot obt, ine 140 de puncte (NU se trunchiaza).
Pentru detalii putet, i sa va uitat, i s, i peste regulile generale de trimitere a temelor.
O tema care NU compileaza va fi punctata cu 0.
O tema care NU trece niciun test pe vmchecker va fi punctata cu 0.
Vor exista mai multe teste pentru fiecare problema n parte. Punctele pe teste
sunt independente, punctajul pe un anumit test nefiind condit, ionat de alte teste.
Fiecare problema va avea o limita de timp pe test (precizata mai jos s, i pe pagina
cu enunt, ul). Daca execut, ia programului pe un test al acelei probleme va dura mai
mult dect limita de timp, vet, i primi automat 0 puncte pe testul respectiv s, i execut, ia
va fi ntrerupta.
n fis, ierul README va trebui sa descriet, i solut, ia pe care at, i ales-o pentru fiecare
problema, sa precizat, i complexitatea pentru fiecare s, i alte lucruri pe care le considerat, i
utile de ment, ionat.
4.1 Checker
5 format arhiv
Temele pot fi testate automat pe vmchecker. Acesta suporta temele rezolvate n
C/C++, Java s, i Python.
Daca dorit, i sa realizat, i tema n alt limbaj, trebuie sa-i trimitet, i un email lui Traian
Rebedea (traian.rebedea@cs.pub.ro), n care sa i ceret, i explicit acest lucru.
Arhiva cu rezolvarea temei trebuie sa fie .zip, avnd un nume de forma
Grupa_NumePrenume_Tema2.zip (ex: 399CX_PuiuGigel_Tema2.zip sau
399CX_BucurGigel_Tema2.zip) s, i va cont, ine:
Fis, ierul pentru make trebuie denumit obligatoriu Makefile s, i trebuie sa cont, ina
urmatoarele reguli:
build, care va compila sursele s, i va obt, ine executabilele (daca acest lucru este
necesar)
run-p1, care va rula problema 1
run-p2, care va rula problema 2
run-p3, care va rula problema 3
clean, care va s, terge executabilele generate
ATENT, IE! Funct, ia main din rezolvarea unei probleme se va gasi ntr-o sursa
ce trebuie obligatoriu denumita astfel:
6 links
Regulament general teme PA
Google C++ Style Guide
Google Java Style Guide
Debugging s, i Structuri de Date