Dr. Doofus își urmărește în continuare planul de a domina lumea. După zeci de eșecuri în care a fost abrupt întrerupt de imprevizibilul ornitorinc agent Perry sau de frații Phineas și Ferb, el simte că a găsit rețeta succesului. A păzit ingredientele „rețetei succesului“ chiar cu mai multa dedicare decât a dat dovadă când încerca să-i saboteze fiicei lui, Vanessa, prima întalnire cu un băiat.
Foarte încrezător, Dr. Doofus vrea să facă o vizită la supermarket cu o listă în care se află ascuns ingredientul final pentru arma sa secretă. Absolut întamplator, Phineas și Ferb au vizitat supermarketul în ora precedentă pentru a-și procura obiectele necesare pentru o nouă invenție și anumitor obiecte li s-a epuizat stocul. Îngrijorat de cei doi baieți și de ornitorincul buclucaș, Dr. Doofus te roagă pe tine să faci aceste cumpărături pentru el și îți oferă posibilitatea să improvizezi atâta timp cât îi aduci ingredientul cheie.
Poți face față provocării?
Următoarea temă are ca principiu realizarea unor cumpărături dintr-un supermarket pe baza unei liste de cumpărături. Lista de cumpărături va fi modificată prin adăugare sau eliminare de produse, iar achizitionarea se va realiza in limita unui buget disponibil (sold).
Fișiere input:
1. „date1.in“
//produs listă supermarket - datele apar pe un rând, în această ordine char* nume; char* categorie; int pret; int cantitate; int stoc;
2. „date2.in“
//produs cumparat char* nume; char* categorie; int cantitate; //ceruta
3. „cerințe.in“
Structuri esențiale:
//produs listă cumpărături - datele apar pe un rând, în această ordine char* nume; char* categorie; int cantitate; //cumparata
Numele structurilor utilizate sunt pur orientative.
Cerințe:
1. Adăugarea produselor din „date2.in“ in „lista2“ (de cumpărături). Datele produselor se citesc şi produsele se adăuga, în ordine, la finalul listei.
2. Eliminarea din „lista2“ (de cumpărături) a tuturor produselor ce au în „lista1“ (supermarket) campul stoc nul (egal cu 0).
3. Realizarea cumpărăturilor cu buget: completarea listei „lista3“ (produse cumpărate) cu datele obiectelor achiziționate în limita bugetului disponibil (se cumpără, la rând, produsele din listă, în limitele date de buget si de cantităţile cerute/disponibile pentru fiecare produs).
4. Realizarea cumpărăturilor cu buget nelimitat și compensare (suprascrie „lista3“, adică nu ţine cont de rezultatul cerinţei 3):
Dacă un produs din „lista2“ (de cumpărături) prezintă o cantitate insuficientă în „lista1“ (supermarket), va fi cumpărat până la epuizare, iar completarea cantității cerute de produs se va face cu alt produs din „lista1“ (supermarket) ce aparține aceleiași categorii.
Condiții pentru cerința 4:
5. Arbore:
Folosind datele din „lista3“ (produse cumpărate), se va crea un arbore binar ordonat crescător (la parcurgerea RSD) după cantitate.
6. Stiva:
Pentru fiecare produs P din „lista1“ (supermarket), sa se afle numărul de produse de pe poziții consecutive înainte de P care au prețul mai mare decat prețul lui P (numărul de produse la rand mai scumpe decat produsul curent, mergand spre anterior);
Fișiere Output:
6 cascaval branzeturi 10 5 1 telemea branzeturi 10 7 0 varza legume 9 5 1 parizer mezeluri 9 10 1 carnati mezeluri 10 6 0 crenvusti mezeluri 5 10 1
4 cascaval branzeturi 10 varza legume 5 parizer mezeluri 14 crenvusti mezeluri 7
1 1 0 1 0 0 300
cascaval branzeturi 0 varza legume 0 parizer mezeluri 0 crenvusti mezeluri 0 cascaval branzeturi 5 telemea branzeturi 5 varza legume 5 parizer mezeluri 10 carnati mezeluri 4 crenvusti mezeluri 7
Așadar, executabilul obținut în urma compilării va avea numele market iar regula de rulare va fi: