#699
Se consideră N
intervale [Ai,Bi]
, 1 ≤ i ≤ N
disjuncte.
Tuturor intervalelor li se aplică o operație de extindere la ambele capete cu o valoare naturală x
, astfel încât după extindere cu valoarea x
, intervalul [Ai,Bi]
va deveni intervalul [Ai-x,Bi+x]
, 1 ≤ i ≤ N
.
După extindere, spunem că intervalele [Ai,Bi]
și [Aj,Bj]
aparțin aceluiași grup de intervale dacă ele se intersectează sau dacă există un interval [Ak,Bk]
astfel încât [Ai,Bi]
se intersectează cu [Ak,Bk]
iar intervalele [Ak,Bk]
, [Aj,Bj
] aparțin aceluiași grup de intervale.
Să se determine valoarea minimă x
cu care vor trebui să fie extinse toate intervalele astfel încât să se formeze un grup cu cel puțin P
intervale.
Lot Juniori, Deva, 2013
Problema | Intervale3 | Operații I/O |
![]() intervale3.in /intervale3.out
|
---|---|---|---|
Limita timp | 0.3 secunde | Limita memorie |
Total: 8 MB
/
Stivă 8 MB
|
Id soluție | #58125060 | Utilizator | |
Fișier | intervale3.cpp | Dimensiune | 1.13 KB |
Data încărcării | 15 Mai 2025, 11:14 | Scor / rezultat | Eroare de compilare |
intervale3.cpp:1:1: error: expected unqualified-id before string constant "/*\ncautare binara\n*/\n# include <cstdio>\n# include <algorithm>\n# define NMax 100003\nusing namespace std;\n\nstruct interval\n{\n int a, b;\n} v[NMax];\nint i, N, P;\nlong long s, d, m;\n\nbool cmp (interval x, interval y)\n{\n if (x.a > y.a) return false;\n return true;\n}\ninline int intersectie(interval x, interval y, long long m)\n{\n\n if ((x.b + m < y.a - m )|| (y.b + m < x.a - m)) return 0;\n return 1;\n}\nbool este (long long x)\n{\n int i, nr = 1;\n for (i = 1; i<N; ++i)\n {\n if (intersectie(v[i], v[i+1], x))\n {\n ++nr;\n if (nr >= P) return true;\n }\n else nr = 1;\n }\n return false;\n}\nint main()\n{\n freopen (\"intervale3.in\", \"r\", stdin);\n freopen (\"intervale3.out\", \"w\", stdout);\n\n scanf(\"%d %d\", &N, &P);\n for (i=1; i<=N; ++i)\n scanf(\"%d %d\", &v[i].a, &v[i].b);\n\n sort(v + 1, v + N + 1, cmp);\n\n s = 1; d = 1500000000;\n while (s <= d)\n {\n m = s + ((d - s) >> 1);\n if (este(m)) d = m - 1;\n else s = m + 1;\n }\n\n printf(\"%lld\\n\", s);\n return 0;\n}" ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema Intervale3 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ă.