Условие: Петр участвует в конкурсе, в котором разыгрывается n призов. Призы пронумерованы...

0 голосов
205 просмотров

Условие:
Петр участвует в конкурсе, в котором разыгрывается n призов. Призы пронумерованы от 1 до n.
По итогам конкурса участник может набрать от 2 до n баллов. Если участник наберет k баллов, то он получит один из призов с номером от 1 до k. Перед тем, как участник выберет свой приз, ведущий конкурса удаляет один из призов из списка. Затем участник может выбрать любой приз из оставшихся k – 1.
Список призов стал известен Петру. Он определил для каждого приза его ценность, для i-го приза она задается целым числом ai.
Требуется написать программу, которая по заданным ценностям призов определяет для каждого k от 2 до n, приз с какой максимальной ценностью гарантированно достанется Петру, если он наберет в конкурсе k баллов.
Формат входных данных:
Первая строка входного файла содержит число n (2 ≤ n ≤ 100 000). Вторая строка этого файла содержит n целых чисел: a1, a2, …, an (1 ≤ ai ≤ 109).
Формат выходных данных:
Выходной файл должен содержать одну строку, содержащую n – 1 целых чисел: для каждого k от 2 до n должна быть выведена ценность приза, который достанется Петру, если он наберет k баллов.


Информатика (71 баллов) | 205 просмотров
Дан 1 ответ
0 голосов

Var a: array[1..100000] of integer;
n, i, j, max, prmax: integer;
begin
read(n);
for i:=1 to n do read(a[i]);
max:=a[1];
for i:=2 to n do if a[i] >= max then begin write(max, ' '); prmax:=max; max:=a[i] end else 
if a[i] > prmax then begin write(a[i], ' '); prmax:=a[i] end else write(prmax, ' ');
end.

Попробовал так написать, думаю, ввод-вывод с файла сам сможешь прикрутить...

(14 баллов)
0

ой, k забыл убрать с объявления переменных :)

0

[редактировано]