Aici sunt prezentate diferențele dintre versiunile selectate și versiunea curentă a paginii.
Ambele părți revizuirea anterioară Versiuni anterioare Urmatoarea versiune | Versiuni anterioare | ||
teme2019:tema-2:micul-marele-strateg [2019/04/21 21:16] david.broscoteanu [Cerinte] |
teme2019:tema-2:micul-marele-strateg [2019/04/23 22:46] mihai.iacov șters |
||
---|---|---|---|
Linia 7: | Linia 7: | ||
- Deadline hard, **19 Mai ora 23:59** (termen limită - **nu se obţin puncte** pe soluţiile trimise mai târziu) | - Deadline hard, **19 Mai ora 23:59** (termen limită - **nu se obţin puncte** pe soluţiile trimise mai târziu) | ||
- Trimiterea temelor se face pe platforma [[https:// | - Trimiterea temelor se face pe platforma [[https:// | ||
- | - Checker-ul offline îl puteţi descărca de la această [[|adresă]] | + | - Checker-ul offline îl puteţi descărca de la această [[https:// |
- Puteţi cere ajutor oricând la această adresă [[sda.ab.teme@gmail.com|email]] | - Puteţi cere ajutor oricând la această adresă [[sda.ab.teme@gmail.com|email]] | ||
===== Descriere ===== | ===== Descriere ===== | ||
- | Micul curier trebuie sa isi indeplineasca cerintele de la munnca | + | Micul curier trebuie sa isi indeplineasca cerintele de la munca cat mai bine. El este responsabil |
- | cu livrarea coletelor catre anumiti clienti din Bucuresti. | + | cu livrarea coletelor catre anumiti clienti din Bucuresti. |
- | sa foloseasca metroul ca mijloc de transport. Din magistralele | + | sa foloseasca metroul ca mijloc de transport |
- | deplaseze in continuare pana la adresa aferenta fiecarui client. | + | deplaseze in continuare |
Avand in vedere faptul ca timpul lui de livrare este unul limitat si el nu este cel mai bun strateg, curierul | Avand in vedere faptul ca timpul lui de livrare este unul limitat si el nu este cel mai bun strateg, curierul | ||
Linia 21: | Linia 21: | ||
transformam intr-un “Mare strateg” ? Ramane de vazut ! | transformam intr-un “Mare strateg” ? Ramane de vazut ! | ||
+ | {{ : | ||
===== Date de intrare ===== | ===== Date de intrare ===== | ||
** Fisierul date.in ** | ** Fisierul date.in ** | ||
Linia 43: | Linia 43: | ||
- Pe urmatoarele Numar_operatii_strategie linii avem operatiile si descrierea lor | - Pe urmatoarele Numar_operatii_strategie linii avem operatiile si descrierea lor | ||
===== Backtracking ===== | ===== Backtracking ===== | ||
- | | + | |
+ | Pentru testele cu **Backtraking** se vor citi un numar_de_strazi si matricea corespunzatoare pentru a ajunge inapoi la sediul jobului sau. | ||
===== Punctaje si Detalii Tehnice ===== | ===== Punctaje si Detalii Tehnice ===== | ||
Linia 52: | Linia 53: | ||
=== Detalii Tehnice === | === Detalii Tehnice === | ||
- | * Distanta – distanta dintre statiile de metrou | + | |
- | * Timp_fata_de_statia_de_metrou – este timpul de la statia de metrou corespunzatoare clientului si | + | |
pana la locatia acestuia | pana la locatia acestuia | ||
* Intre clientii care sunt localizati in zone apropiate ca distanta din Bucuresti se afla strazi. | * Intre clientii care sunt localizati in zone apropiate ca distanta din Bucuresti se afla strazi. | ||
Linia 71: | Linia 72: | ||
===== Cerinte ===== | ===== Cerinte ===== | ||
- | * conexiune x y - Se verifica daca exista strada intre doi clienti { da - afiseaza OK; nu - afiseaza NO} | + | |
- | * legatura x - Afiseaza statiile de metrou cu care exista legatura directa(curierul merge doar o | + | |
statie in acest caz). | statie in acest caz). | ||
- | | + | * **Exemplu: Statie1 Statie2 Statie3** |
+ | * Se afiseaza un rand liber in cazul in care nu exista nicio statie de metrou legata | ||
+ | * **blocaj_tunel x y** – Se blocheaza un drum intre 2 statii de metrou – nu se afiseaza nimic, se | ||
marcheaza cu infinit in cazul in care statia exista | marcheaza cu infinit in cazul in care statia exista | ||
- | * blocaj_strada x y - Se aglomereaza o strada(timpul devine infinit) – nu se afiseaza nimic, se | + | |
marcheaza cu infinit in cazul in care strada exista | marcheaza cu infinit in cazul in care strada exista | ||
- | * adauga_ruta x y valoare_distanta – Se construieste un drum intre 2 statii de metrou. | + | |
- | * sterge_ruta x y – Inchide un drum intre doua statii de metrou – inundatie, oprire pentru | + | |
reparatii. | reparatii. | ||
- | * adauga_strada x y valoare_distanta – Se construieste un drum intre 2 clienti. | + | |
- | * sterge_strada x y – Inchide un drum intre doi clienti – oprire pentru reparatii | + | |
- | * drum_strada x y – Calculeaza cel mai scurt timp de la x la y(x si y sunt clienti). | + | |
- | Se afiseaza clientii in ordinea in care le-a fost livrata comanda, incepand cu primul si pana la ultimul. | + | |
Afisarea se face sub forma unui vector de string-uri ce contine numele clientilor la care curierul a livrat. | Afisarea se face sub forma unui vector de string-uri ce contine numele clientilor la care curierul a livrat. | ||
- | * drum_metrou x y – Calculeaza cel mai scurt drum de la x la y(x si y sunt statiile de metrou). | + | |
- | Se afiseaza numele statiilor inecepand cu prima statie si pana la ultima. Afisarea se face sub foma unui | + | |
vector de string-uri ce contine numele clientilor la care curierul a livrat. | vector de string-uri ce contine numele clientilor la care curierul a livrat. | ||
- | * timp_minim_statie x – Calculeaza timpul minim necesar livrarii comenzii la Statia x. Curierul | + | |
- | opteaza pentru parcurgerea drumului cel mai scurt catre primul client si mai apoi se parcurge | + | |
drumul cel mai scurt de la clientul respectiv la toti clientii. De la ultimul client micul strateg alege | drumul cel mai scurt de la clientul respectiv la toti clientii. De la ultimul client micul strateg alege | ||
direct strada care face legatura cu metroul | direct strada care face legatura cu metroul | ||
- | * comanda_statie valoare_suma – Afiseaza statiile in urma carora curierul obtine o suma mai | + | |
mare sau egala cu numarul “Valoare_suma” | mare sau egala cu numarul “Valoare_suma” | ||
+ | === Backtracking === | ||
+ | |||
+ | Dupa ce micul strateg reuseste sa devina un „Mare strateg”, voi fiind responsabili in totalitate pentru | ||
+ | reusita lui, curierul trebuie sa isi incheie activitatea prin depunerea sumei colectate din coletele achitate | ||
+ | de catre clienti. El poate depune aceasta suma la orice sediu al firmei, insa nu mai poate folosi ca mijloc | ||
+ | de transport metroul. De specificat faptul ca fiecare statie de metrou are asociata un sediu. | ||
+ | |||
+ | Luand in considerare faptul ca drumul arata ca un labirint, fiind intregit doar din strazi la stanga sau la | ||
+ | dreapta (numarul strazi merge la stanga = numarul de strazi merge la dreapta), sa il ajutam in continuare | ||
+ | pe Marele strateg isi indeplineasca toate cerintele: | ||
+ | |||
+ | **Sa se determine cel mai scurt timp in care curierul poate sa ajunga la sediu.** | ||
+ | * Problema poate fi vazuta ca o matrice care are asociat timpul pe fiecare strada. Timpul, cel mai | ||
+ | mare adversar al marelui nostru strateg sufera modificari la fiecare noua deplasare. | ||
+ | * De asemenea, regula de parcurgere a drumului presupune deplasarea dintr-un colt in altul al | ||
+ | diagonalei principale din matrice. | ||
+ | |||
+ | ===== Date de iesire ===== | ||
+ | ** Fisierul rezultate.out ** | ||
+ | Fişierul de ieşire va conţine rezultatele operaţiilor ce generează un răspuns. Rezultatele sunt scrise în | ||
+ | ordinea în care sunt scrise operaţiile primite la intrare, fiecare rezultat este urmat de un final de linie. | ||
+ | In cazul testelor cu Backtraking, | ||
===== Reguli de trimitere ===== | ===== Reguli de trimitere ===== |