Sunteți pe pagina 1din 5

Proiectarea Algoritmilor 2015

Tema 1

Proiectarea Algoritmilor - Tema 1


Dat publicare: 15 martie 2015
Deadline: 5 aprilie 2015 - 23:55
Ioana Alexandra Antoche
David Traian Iancu
Andrei Poenaru

Proiectarea Algoritmilor 2015

Tema 1

Prima problem - Excursie - 40 de puncte

Lui David i place s mearg la munte. n ultimul timp, a dezvoltat o pasiune


pentru rucsacii de alergat, care sunt extrem de utili n multe situatii. David are
2 rucsaci de alergat, fiindc sunt uori i i folosete pe amndoi. Rucsacii au
greutatea G1, respectiv G2. De asemenea, David are i niste obiecte pe care
doreste s le transporte, fiecare avand un anumit profit pentru el. Mai mult,
fiecare obiect are un anumit profit n funcie de rucsac (un rucsac poate conserva
mai bine anumite proprieti). Pentru c se tie deja cum poate afla care este
profitul maxim pentru fiecare rucsac, David i-a pus o alt ntrebare: care este
profitul maxim care se poate obine nmulind profitul total din primul rucsac
cu profitul total din al doilea rucsac?
Cerine:
David v roag pe voi s scriei un program care calculeaza maximul posibil
dintre profitul din primul rucsac nmulit cu profitul din al doilea rucsac, avnd
n vedere c un obiect poate s fie pus ntr-un singur rucsac, o singur dat
(dei pot exista mai multe obiecte identice).
Date de intrare:
Pe prima linie a fiierului excursie.in se afl N , G1 i respectiv G2, numrul
de obiecte, greutatea primului rucsac i greutatea celui de-al doilea rucsac. Pe
urmtoarele N linii se vor afla 3 numere, reprezentnd costul obiectului i, profitul care se obine punndu-l n primul rucsac, respectiv profitul care se obine
punndu-l n al doilea rucsac.
Date de ieire:
Fiierul excursie.out conine o singur linie, reprezentnd profitul total obinut
(produsul dintre profitul din cei 2 rucsaci).
Exemplu:
excursie.in:
3
5
6
2

10 10
10 10
12 10
5 10 8

excursie.out
216

Explicaie: n primul rucsac punem primul si ultimul obiect, iar n al doilea


pe cel din mijloc. Profitul total va fi (10+8)*12 = 216.
Restricii:
1 N, G1, G2 50
profitul maxim care se poate obine pentru primul rucsac este cel mult
150

Proiectarea Algoritmilor 2015

Tema 1

A doua problem - Ptrat - 40 de puncte

David tocmai a nvat despre vectori. Fiind un mare pasionat de ptrate (figuri
geometrice la care contempleaz atunci cnd merge cu rucsacii pe munte), acesta
nu a rezistat tentaiei de a lega cele 2 noiuni i aa, din senin, (mai mult ca s
v dea vou bati de cap) s-a trezit c are urmtoarea problem:
Cerin:
Fiind dat un vector V alctuit din N numere ntregi se calculeaz toate cele
N 2 sume de cte 2 elemente Vi + Vj , cu 0 i, j < N . Presupunnd c sumele
ar fi sortate cresctor, se cere determinarea celei de-a K-a sume. Sumele sunt
numerotate de la 1 la N 2 .
Date de intrare:
Pe prima linie a fiierului patrat.in se afl 2 numere: N i K.
Urmtoarele N linii conin cte un numr din vector.
Date de ieire:
Pe prima i singura linie a fiierului patrat.out trebuie s scriei valoarea celei
de-a K-a sume.
Exemplu:
patrat.in:
34
7
2
5

patrat.out:
9

Explicaie:
Cele 9 sume sunt:
2+2=4
2+5=7
5+2=7
2+7=9
7+2=9

5 + 5 = 10
5 + 7 = 12
7 + 5 = 12
7 + 7 = 14

Restricii:
1 N 50000
1 K N2
0 Vi < 220

Proiectarea Algoritmilor 2015

Tema 1

Punctare

Punctajul pentru primele dou probleme este de 40 de puncte fiecare, 10 puncte


vor fi acordate pentru coding-style, 10 puncte pentru comentarii i README.
Pentru detalii putei s v uitai i peste regulile generale de trimitere a temelor.
Vor exista n total 20 de teste de 4 puncte fiecare: 10 teste pentru prima problem i 10 teste pentru cea de-a doua. Punctele pe teste sunt independente,
punctajul pe un anumit test nefiind condiionat de alte teste.
Fiecare problem va avea o limit de timp pe test (precizat mai jos) - dac
execuia programului pe un test al acelei probleme va dura mai mult dect
limita de timp vei primi automat 0 puncte pe testul respectiv i execuia va fi
ntrerupt. n fiierul README va trebui s descriei soluia pe care ai ales-o
pentru fiecare problem, s precizai complexitatea pentru fiecare i alte lucruri pe care le considerai utile de menionat.
Corectorii i rezerv dreptul de a scdea puncte dac vor considera acest lucru
necesar.

Format arhiva i testare

Temele pot fi testate automat pe vmchecker - acesta suport temele rezolvate in


C/C++ i Java. Dac dorii s realizai tema n alt limbaj trebuie s-i trimitei
un e-mail lui Traian Rebedea (traian.rebedea@cs.pub.ro) n care s i cerei
explicit acest lucru.
Arhiva cu rezolvarea temei trebuie s fie .zip i s conin:
Fiierul/fiierele surs
Fiierul Makefile
Fiierul README
Fiierul pentru make trebuie denumit obligatoriu Makefile i trebuie s conin
urmtoarele reguli:
build, care va compila sursele i va obine executabilele
run-p1, care va rula executabilul pentru problema 1
run-p2, care va rula executabilul pentru problema 2
clean, care va terge executabilele generate
Atentie! Numele regulilor trebuie s fie exact cele de mai sus, n special pentru
cele de run. Absena sau denumirea diferit a acestora va avea drept consecin
obinerea a 0 puncte pe testele asociate problemei rezolvate de regula respectiv.
Atenie Pentru cei ce folosesc C/C++ NU este permis compilarea cu opiuni
de optimizare a codului (O1, O2, etc.).
Limitele de timp pentru problema 1 sunt:
C/C++: x secunde
Java: y secunde
4

Proiectarea Algoritmilor 2015

Tema 1

Limitele de timp pentru problema 2 sunt:


C/C++: x secunde
Java: y secunde

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