CCCPaste

ac8f118a05bd3

Это базовая задача на бинарный поиск, рекомендую почитать про него, перед тем как решать задачку

Переберем элементы из 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=' ')