#4628
Mugurel
Mugurel a decis să devină în sfârșit cel mai mare antreprenor din Imperiul Rațelor de Cauciuc. Astfel, el și-a deschis o afacere cu fructele sale preferate: portocale și banane.
Acesta primește planul recoltelor de fructe: timp de N
zile, în fiecare zi Mugurel primește M
grămezi de portocale și M
grămezi de banane (alternativ), reprezentate prin numărul lor de kilograme.
Mugurel trebuie să împacheteze toate aceste fructe, însă producătorul său de cutii îi oferă două variante, din care poate alege doar una: fabricarea a K
cutii pentru portocale și K
cutii pentru banane (împachetare separată), sau fabricarea a K
cutii mixte (împachetarea portocalelor și a bananelor împreună).
Însă, totul are un preț. Fie \(c_{port}\), \(c_{ban}\), \(c_{mixt}\) capacitățile cutiilor de portocale, banane respectiv mixte. Atunci, Mugurel va plăti \(A \; maci \cdot c_{port} + B \; maci \cdot c_{ban}\) sau \(C \; maci \cdot c_{mixt}\), în funcție de varianta de împachetare aleasă, unde \(A\), \(B\) și \(C\) vor fi prețuri oferite de producător. Mugurel va alege metoda de împachetare astfel încât suma de bani cheltuită să fie cât mai mică.
După ce plătește și primește cutiile, începe împachetarea. De fiecare dată când închide o cutie, o pune la finalul șirului de cutii deja închise (Mugurel se ocupă mai întâi de grămada de portocale, apoi de cea de banane). La finalul împachetării fructelor, el trebuie să împartă șirul de cutii în două șiruri consecutive, pe care le vom numi loturi.
Loturile vor fi trimise către cele două cetăți ale Imperiului, însă Mugurel nu vrea să pornească un război între cele două cetăți, așadar vrea să le împartă cu grijă. Numim discrepanță a unui lot diferența dintre cutia cu număr maxim de kilograme și cea cu număr minim. Împărțirea trebuie făcută astfel încât suma discrepanțelor celor două loturi să fie minimă, pentru împachetare.
Cu atâtea responsabilități pe cap, Mugurel vă roagă să-l ajutați cu afacerea.
Concursul Interjudeţean de Matematică şi Informatică Grigore Moisil, 2023, Clasa a IX-a
Problema | Mugurel | Operații I/O |
mugurel.in /mugurel.out
|
---|---|---|---|
Limita timp | 0.7 secunde | Limita memorie |
Total: 128 MB
/
Stivă 16 MB
|
Id soluție | #51674692 | Utilizator | |
Fișier | mugurel.cpp | Dimensiune | 4.37 KB |
Data încărcării | 01 August 2024, 11:02 | Scor / rezultat | Eroare de compilare |
mugurel.cpp: In function 'std::vector<std::pair<int, char> > pack_mixed(const std::vector<int>&, const std::vector<int>&, int)': mugurel.cpp:30:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while (i < oranges.size() && j < bananas.size()) { ^ mugurel.cpp:30:51: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while (i < oranges.size() && j < bananas.size()) { ^ mugurel.cpp:35:33: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while (i < oranges.size() && j < bananas.size() && ^ mugurel.cpp:35:55: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] while (i < oranges.size() && j < bananas.size() && ^ mugurel.cpp: In function 'int calculate_min_discrepancy(const std::vector<std::pair<int, char> >&)': mugurel.cpp:58:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 0; i < boxes.size(); ++i) { ^ mugurel.cpp:62:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for (int i = 1; i < boxes.size(); ++i) { ^ mugurel.cpp:65:28: error: 'max1' was not declared in this scope int discrepancy1 = max1 - min1; ^ mugurel.cpp:65:35: error: 'min1' was not declared in this scope int discrepancy1 = max1 - min1; ^ mugurel.cpp:66:28: error: 'max2' was not declared in this scope int discrepancy2 = max2 - min2; ^ mugurel.cpp:66:35: error: 'min2' was not declared in this scope int discrepancy2 = max2 - min2; ^ mugurel.cpp:63:13: warning: unused variable 'sum1' [-Wunused-variable] int sum1 = prefix_sums[i]; ^ mugurel.cpp:64:13: warning: unused variable 'sum2' [-Wunused-variable] int sum2 = prefix_sums[boxes.size()] - prefix_sums[i]; ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Mugurel face parte din prima categorie. Soluția propusă de tine va fi evaluată astfel:
Suma punctajelor acordate pe testele utilizate pentru verificare este 100. Astfel, soluția ta poate obține cel mult 100 de puncte, caz în care se poate considera corectă.