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