#4612
acoperire2
Floricel vrea să facă cât mai mulți bani. Ca să aibă suficienţi bani să-şi poată cumpăra un apartament, are de rezolvat o problemă care se poate modela astfel: El are N
intervale inițiale, date prin capetele lor. Floricel mai trebuie să creeze intervale noi, denumite intervale de acoperire. Prietenul său, Ted, îi spune că are nevoie de mai multe provocări în viață să fie mai fericit, și îi pune Q
întrebări de forma: “Dacă ai voie să creezi cel mult K
intervale de acoperire, care ar fi lungimea minimă a celui mai lung interval de acoperire astfel încât toate intervalele inițiale să fie acoperite? Și dacă poți, care este soluția minimă lexicografic? O soluție este minimă lexicografic dacă este minimă întâi după numărul intervalelor de acoperire, iar după aceea comparând intervalele după capetele de stânga și de dreapta, ordonând intervalele după capetele din stânga.”
OJI 2024, clasele 11-12
Problema | acoperire2 | Operații I/O |
acoperire.in /acoperire.out
|
---|---|---|---|
Limita timp | 0.25 secunde | Limita memorie |
Total: 128 MB
/
Stivă 8 MB
|
Id soluție | #50152690 | Utilizator | |
Fișier | acoperire2.cpp | Dimensiune | 2.91 KB |
Data încărcării | 28 Martie 2024, 20:05 | Scor / rezultat | 100 puncte |
acoperire2.cpp:16:33: warning: 'nodiscard' attribute directive ignored [-Wattributes] [[nodiscard]] int get_mid() const { ^ acoperire2.cpp:20:36: warning: 'nodiscard' attribute directive ignored [-Wattributes] [[nodiscard]] int get_length() const { ^ acoperire2.cpp: In constructor 'Interval::Interval(int, int)': acoperire2.cpp:10:23: warning: 'Interval::right' will be initialized after [-Wreorder] int left{}, right{}; ^ acoperire2.cpp:8:13: warning: 'int Interval::mid' [-Wreorder] int mid{}; ^ acoperire2.cpp:14:5: warning: when initialized here [-Wreorder] Interval(int left, int right) : left(left), right(right), mid(right + left) {} ^ acoperire2.cpp: In lambda function: acoperire2.cpp:70:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] return ans.size() <= target; ^ acoperire2.cpp: In function 'int main()': acoperire2.cpp:42:40: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("acoperire.in", "r", stdin); ^ acoperire2.cpp:43:42: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)', declared with attribute warn_unused_result [-Wunused-result] freopen("acoperire.out", "w", stdout); ^
Test | Timp | Mesaj evaluare | Scor posibil | Scor obținut | ||
---|---|---|---|---|---|---|
1 | 0 secunde | 10 | 10 | |||
2 | 0.132 secunde | 10 | 10 | |||
3 | 0.012 secunde | 10 | 10 | |||
4 | 0.136 secunde | 10 | 10 | |||
5 | 0.036 secunde | 10 | 10 | |||
6 | 0 secunde | 10 | 10 | |||
7 | 0 secunde | 10 | 10 | |||
8 | 0 secunde | 10 | 10 | |||
9 | 0 secunde | 10 | 10 | |||
10 | 0.004 secunde | 10 | 10 | |||
Punctaj total | 100 |
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema acoperire2 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ă.