Saman tayalarının koordinatlarını sıraya düzək.
Qoy — intervalında saman tayalarının sayı olsun. Beləliklə, intervalında saman tayalarının sayı f(b) - f(a - 1)-ə bərabər olacaq.
dəyərini binar axtarış vasitəsilə tapırıq.
Alqoritmin reallaşdırılması
Giriş məlumatlarını oxuyuruq.
scanf("%d %d", &n, &q);
v.resize(n);
for (i = 0; i < n; i++)
scanf("%d", &v[i]);Saman tayalarının koordinatlarını sıraya düzək.
sort(v.begin(), v.end());sorğuları emal edirik.
for (i = 0; i < q; i++)
{-dan -yə qədər intervalında saman tayalarının sayını tapıb çıxarırıq.
scanf("%d %d", &a, &b);
res = upper_bound(v.begin(), v.end(), b) –
upper_bound(v.begin(), v.end(), a - 1);
printf("%d\n", res);
}Python reallaşdırılması
import bisectGiriş məlumatlarını oxuyuruq.
n, q = map(int, input().split())
v = list(map(int, input().split()))Saman tayalarının koordinatlarını sıraya düzək.
v.sort()sorğuları emal edirik.
for _ in range(q):-dan -yə qədər intervalında saman tayalarının sayını tapıb çıxarırıq.
a, b = map(int, input().split())
res = bisect.bisect_right(v, b) - bisect.bisect_right(v, a - 1)
print(res)