#2276
cb
Se consideră un șir a[1]
, a[2]
, …, a[n]
de numere naturale. Se dau și T
intervale închise de forma [x, y]
, cu x ≤ y
. Pentru fiecare din cele T
intervale de forma [x, y]
trebuie să răspundeți la întrebarea: câte numere din șir aparțin intervalului [x, y]
?
-
Problema | cb | Operații I/O | tastatură/ecran |
---|---|---|---|
Limita timp | 1 secunde | Limita memorie |
Total: 64 MB
/
Stivă 8 MB
|
Id soluție | #28224568 | Utilizator | |
Fișier | cb.cpp | Dimensiune | 715 B |
Data încărcării | 25 Februarie 2021, 23:34 | Scor / rezultat | Eroare de compilare |
cb.cpp: In function 'int main()': cb.cpp:5:182: error: 'BsMin' was not declared in this scope int main() { cin >> n >> T; for (int i = 0; i < n; ++i) cin >> a[i]; sort(a, a + n); int x, y, cnt; for (int i = 1; i <= T; ++i) { cin >> x >> y; int p2 = BsMax(y); int p1 = BsMin(x); if (p1 == -1) cout << 0 << '\n'; else cout << p2 - p1 + 1 << '\n'; } } int BsMin(int v) { int l = 0, r = n - 1, m; int poz = -1; while (l <= r) { m = (l + r) / 2; if (a[m] >= v) { poz = m; r = m - 1; } else l = m + 1; } return poz; } int BsMax(int v) { int l = 0, r = n - 1, m; int poz = -1; while (l <= r) { m = (l + r) / 2; if (a[m] <= v) { poz = m; l = m + 1; } else r = m - 1; } return poz; } ^ cb.cpp:5:96: warning: unused variable 'cnt' [-Wunused-variable] int main() { cin >> n >> T; for (int i = 0; i < n; ++i) cin >> a[i]; sort(a, a + n); int x, y, cnt; for (int i = 1; i <= T; ++i) { cin >> x >> y; int p2 = BsMax(y); int p1 = BsMin(x); if (p1 == -1) cout << 0 << '\n'; else cout << p2 - p1 + 1 << '\n'; } } int BsMin(int v) { int l = 0, r = n - 1, m; int poz = -1; while (l <= r) { m = (l + r) / 2; if (a[m] >= v) { poz = m; r = m - 1; } else l = m + 1; } return poz; } int BsMax(int v) { int l = 0, r = n - 1, m; int poz = -1; while (l <= r) { m = (l + r) / 2; if (a[m] <= v) { poz = m; l = m + 1; } else r = m - 1; } return poz; } ^
www.pbinfo.ro permite evaluarea a două tipuri de probleme:
Problema cb 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ă.