Sunteți pe pagina 1din 5

ProiectareaAlgoritmilor

Tema3

Datpublicare:
6.05.2015

Deadlinesoft:
20.05.2015

Deadlinehard:
27.05.2015

ClaudiaCrdei
ClementinCercel
VladimirCernov

Problema1Negustor

Enun

Gigel a decis s nu mai fie asistent la PA i s devin negustor. Pentru nceput,el a


hotrt s viziteze cele mai mari orae din ar. Fiind vorba de prima cltorie, Gigel
doretesobinunprofitctmaibun.

Gigel ian considerareN oraedinar,pentru care tiedinaintecectig poateobine


nfiecare,cticostuldeplasriidintreele.

Cerin

Ajutail pe Gigel s gseasc cel mai bun raport profit/cost, care poate fi obinut
efectundunturprinorae(acestanutrebuieneapratsconintoateoraele).

Datedeintrare

Fiieruldeintrare
negustori.inva
coninepeprimalinie dounumere
N
iM
ce
reprezint numrul
de orae i respectiv numrul de legturi directe ntre orae.
Urmtoarea linie vaconine
Nnumerecereprezintprofitulpecarenegustorulpoatesa
l obinn fiecare ora.Urmtoarele
Mlinii conincte untriplet
(i, j,c)cuurmtoarea
semnificaie:
i i
j reprezint indicii oraelor care au o legtur direct iar
creprezint
costuldedeplasarentreceledouorae.

Datedeieire

5
Fiieruldeieire
negustori.out
vaconineunsingurnumr(cupreciziede10
)
cereprezintraportulmaximprofit/cost.

Exemplu
negustori.in
67
105205515
123
162
2410
252
355
365
455

negustori.out
3.23529

Explicaie:Avemturul361253caremaximizeazprofitul.

Restricii

1<=
N
<=1000
1<=
M
<=10000
p(j)/c(i,j)
<=1000,unde
p(j)
esteprofitulinorasul
j
,iar
c(i,j)
estecostul
legturii
(i,j)
Timpexecuiepetest:
1secundC++,2secundeJava.

Problema2Prieteni

Enun

Plictisit, Gigela hotrt s facoanalizagrupuluide


Nprietenidincarefaceparte.El
aintrodusnoiuneadeprietendeordinKnfelulurmtor:
2prietenidirecisuntprietenideordin1
Dac 2 persoane sunt prietenide ordin K, atunciele suntiprietenideordinK+
1
2persoaneA i Bsunt prieteni deordinulKdacexistopersoanCa..AiC
suntprietenideordinulK1,iarCiBsuntprietenideordinul1.

Cu alte cuvinte, Gigeleste prietendeordinul1cuoricare dintre prietenii si direci, iar


cuprieteniiprietenilorsiseaflnrelaiedeprieteniedeordinul2.a.m.d.

Baznduse pe definiia de mai sus, Gigel a formulat i noiunea de distan dintre 2


persoaneA,B dingrup, fiindegalcunumrulminim de persoanecetrebuieeliminate
dingrupa..AiBsnufieprietenideordin3.

Cerin

Ajutail pe Gigel s calculeze distana dintre 2 persoane


A i
B din grupul su de
prieteni.

Datedeintrare

Fiieruldeintrare
prieteni.inva
coninepeprimalinie numrul
N
.UrmtoareleN
linii vor conine cte N numere, din mulimea{0, 1}. Aljleanumr de pelinia i+ 1
este 1doardacpersoanelei2ij1suntprietenideordin1.LiniaN+ 2coninecele
2numere
A
i
B
.

Datedeieire

Fiierul de ieire
prieteni.out va conine pe o singur linie distana dintre
persoanele
A
i
B
.

Exemplu

prieteni.in
4
0100
1010
0101
0010
03

prieteni.out
1

Explicaie:Trebuieeliminatpersoana1sau2.

Restricii

2<=
N
<=40
Timpexecuiepetest:
1secundC++,2secundeJava.

Punctare

Punctajul pentru fiecare problem este de 60 de puncte, obinute prin rularea soluiei
peste un numr de teste. Testele sunt independente. Fiecare soluie trebuie s se
ncadrezenlimiteledetimpmenionate.

n afar de rezolvrile problemei, se vor acorda 10 puncte pentru coding style i 10


puncte pentru Readme. Un Readme bun trebuie s conin explicaiile relevante
aferente soluiilor, ct i complexitile algoritmilor propui. De asemenea, urmrii i
indicaiiledinregulamentprivindrealizareatemelor.

Punctajultotalpentrutema3estede140depuncte.

Formatarhivitestare

Soluiile vor fi testate automat pe vmchecker,pe careputeislfolosiiivoi pentru a


verifica corectitudinea algoritmilor. Tema poate firezolvatn limbajele de programare
C/C++, Java, pentru folosirea unui alt limbaj trebuie s avei acordul lui Traian
Rebedea.

Arhivatrimistrebuiesfienformat*.zipisconin:
Fiierelesurs
Makefile
Readme

FiierulMakefiletrebuiesconinurmtoarelereguli:
build
runp1
runp2
clean

Pentru compilarea surselor C/C++ nu este permis folosirea opiunilor de optimizare


(O1,O2etc.).

Regulile de mai sus sunt obligatorii, abaterea de la ele poate duce la anularea
punctajului(parialsautotal)pentrutem.

S-ar putea să vă placă și