Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Это базовая задача на бинарный поиск, рекомендую почитать про него, перед тем как решать задачку
- Переберем элементы из b (пусть текущий, и для каждого будем искать нужный элемент из a бинарным поиском -- изначально он может быть любым из a, потом мы проверяем средний элемент -- если он больше чем b[i] -- тогда наш искомый может быть либо этим средним, либо левее, и наоборот, если он меньше, то тогда первый больший лежит точно справа
- И так мы каждый раз откидываем одну из половин, пока не останется один элемент -- он и есть искомый
- Пример кода на python:
- n, m = map(int, input().split())
- a = list(map(int, input().split()))
- b = list(map(int, input().split()))
- for i in range(m):
- l = -1
- r = n
- while r - l > 1:
- mid = (r + l) // 2
- if a[mid] > b[i]:
- r = mid
- else:
- l = mid
- if r == n:
- print(-1, end=' ')
- else:
- print(r + 1, end=' ')
Advertisement
Add Comment
Please, Sign In to add comment