Это базовая задача на бинарный поиск, рекомендую почитать про него, перед тем как решать задачку
Переберем элементы из 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=' ')