Решение задачи Точки и отрезки с Яндекс Контест

Без пояснения   Просмотров: 6915


Дано n отрезков на числовой прямой и m точек на этой же прямой. Для каждой из данных точек определите, скольким отрезкам они принадлежат. Точка x считается принадлежащей отрезку с концами a и b, если выполняется двойное неравенство min(a, b) ≤ x ≤ max(a, b).


Код

n, m = map(int, input().split())
a = []
for i in range(n):
    x, y = map(int, input().split())
    x, y = min(x, y), max(x, y)
    a.append([x, '('])
    a.append([y, ')'])
m = list(map(int, input().split()))
for i in range(len(m)):
    a.append([m[i], '(('])
k = 0
a.sort()
dict = {}
for i in range(len(a)):
    if a[i][1] == '(':
        k += 1
    elif a[i][1] == ')':
        k -= 1
    else:
        dict[a[i][0]] = k
for i in m:
    print(dict[i], end=" ")

         

Администратор Photo Автор: Администратор



Комментарии

Чтобы написать комментарии вам нужно войти в систему или зарегистрироваться



Заявка на расчет