nq1s788

Untitled

Oct 5th, 2025
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. Это базовая задача на бинарный поиск, рекомендую почитать про него, перед тем как решать задачку
  2.  
  3. Переберем элементы из b (пусть текущий, и для каждого будем искать нужный элемент из a бинарным поиском -- изначально он может быть любым из a, потом мы проверяем средний элемент -- если он больше чем b[i] -- тогда наш искомый может быть либо этим средним, либо левее, и наоборот, если он меньше, то тогда первый больший лежит точно справа
  4. И так мы каждый раз откидываем одну из половин, пока не останется один элемент -- он и есть искомый
  5.  
  6. Пример кода на python:
  7. n, m = map(int, input().split())
  8. a = list(map(int, input().split()))
  9. b = list(map(int, input().split()))
  10. for i in range(m):
  11.     l = -1
  12.     r = n
  13.     while r - l > 1:
  14.         mid = (r + l) // 2
  15.         if a[mid] > b[i]:
  16.             r = mid
  17.         else:
  18.             l = mid
  19.     if r == n:
  20.         print(-1, end=' ')
  21.     else:
  22.         print(r + 1, end=' ')
Advertisement
Add Comment
Please, Sign In to add comment