На автоматизированной производственной линии последовательно обрабатываются детали. В конце обработки каждая деталь оценивается по числовому показателю качества. Для всей партии из \(N\) деталей система сохраняет числовые значения оценки качества (в баллах) — в том порядке, в котором детали сходили с линии (нумерация записей в журнале качества для каждой партии начинается с единицы). На основании этих оценок составляется рейтинг качества деталей партии по следующему алгоритму: деталь занимает в рейтинге место с номером \(R,\) если ровно \(R - 1\) деталей имеют больший балл. Несколько деталей могут делить одно место, некоторые места могут быть не заняты.
В конце дня инженеры анализируют журнал качества партии, чтобы выявить особенные детали с показателем качества от \(A\) до \(B\) включительно. Деталь считается особенной при следующих условиях:
Определите наивысшее возможное место особенной детали в рейтинге качества и общее количество особенных деталей в партии.
Входные данные
В первой строке входного файла дано натуральное число \(N\) \((3 < N < 100~000)\) — количество деталей в партии. Вторая строка входного файла содержит три натуральных числа, разделённых пробелами: числа \(A, \, B\) \((A < B)\) — границы диапазона допустимых значений качества для поиска особенной детали и число \(K\) — показатель требуемой разности баллов особенной детали и детали, следующей за ней в исходном списке. В следующих \(N\) строках даны натуральные числа, не превышающие \(1000,\) обозначающие баллы деталей в порядке, записанным в журнале качества.
Выходные данные
Наивысшее возможное место в рейтинге, которое занимает особенная деталь, и общее количество особенных деталей.
Типовой пример организации данных во входном файле
\(12\)
\(70 \,\, 90 \,\, 5\)
\(65\)
\(72\)
\(88\)
\(84\)
\(91\)
\(77\)
\(90\)
\(85\)
\(80\)
\(73\)
\(88\)
\(83\)
При таких исходных данных в партии особенные детали с показателями качества \(90, \,\, 85\) и \(88\) баллов; деталь с показателем качества \(90\) баллов занимает в рейтинге место \(2.\)
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.
Решение:
Python
fd = open('26.txt')
N = int(fd.readline())
A, B, K = map(int, fd.readline().split())
details = [int(x) for x in fd]
M = max(details)
pM = 0
for i in range(len(details)):
if details[i] == M:
pM = i
break
spec = []
for i in range(pM + 1, len(details) - 1):
if A <= details[i] <= B and abs(details[i] - details[i + 1]) <= K:
spec.append(details[i])
details = sorted(details, reverse=True)
ms = max(spec)
p = 0
for i in range(len(details)):
if details[i] == ms:
p = i + 1
break
print(p, len(spec))
Ответ: \(11797 \,\, 18\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене