Курьер
ограничение времени 1 секунда
ограничение памяти 256mb
ввод стандартный ввод или input.txt
вывод стандартный вывод или output.txt
курьеру васе поручили доставить n посылок. вася начинает работать в первый день и каждый день может доставить ровно одну посылку. про каждую посылку известен последний день, когда ее можно доставить di, и штраф wi, который придется заплатить, если посылка не будет доставлена в срок.
васе решить, в каком порядке доставлять посылки, чтобы суммарный штраф был как можно меньше.
например, если есть 3 посылки, первую необходимо доставить в первый день и штраф за опоздание 2, вторую также необходимо доставку в первый день и штраф за опоздание 3, а третью необходимо доставить не позже третьего дня и штраф за опоздание 1, то оптимально доставить сначала вторую, потом третью, а затем первую посылку. в этом случае не в срок доставлена только первая посылка и штраф составляет 2. доставить одновременно первую и вторую посылку в срок невозможно.
формат ввода
в первой строке дано единственное натуральное число n (1 ≤ n ≤ 200 000) — количество посылок.
затем следует n строк, в каждой из которых содержится по два числа di и wi (1 ≤ di ≤ 200 000, 1 ≤ wi ≤ 200 000) — последний день, когда можно доставить посылку без штрафа и стоимость опоздания для i-й посылки.
формат вывода
в первой строке выведите единственное число, равное минимально возможному суммарному штрафу. во второй строке через пробел выведите n чисел, где i-е число — день, в который необходимо доставить i-ю посылку.
если возможно несколько оптимальных расписаний, выведите любое из них.
246
389
Ответы на вопрос:
1. var n,i,m: integer; x: real; begin write('число оценок: '); readln(n); for i: =1 to n do begin writeln('введите оценку: '); readln(m); x: =x+m end; x: =round(x/n); writeln('оценка за четверть ',x) end.2.var n: integer; a,b,c: real; beginwrite('число a: '); readln(a); if a> 0 then n: =1; write('число b: '); readln(b); if b> 0 then n: =n+1; write('число c: '); readln(c); if c> 0 then n: =n+1; writeln('число положительных ',n)end.3.var n,i,s: integer; a: array of integer; beginwrite('размер массива: '); readln(n); setlength(a, n); for i: =0 to n-1 do begin a[i]: =random(-3,3); write(a[i]: 3); if a[i]< > 0 then s: =s+1 end; writeln; write('ненулевых элементов: ',s); end.
Популярно: Информатика
-
Cardboard14.03.2022 18:10
-
0502abylai28.09.2022 12:48
-
guseva2yul11.09.2021 12:40
-
TheSniper16.12.2022 08:26
-
марьяна12615.10.2020 13:27
-
Nika034524.02.2021 21:22
-
Sasha67000023.10.2022 20:43
-
Nobd24.03.2020 05:42
-
MrFoksSuper20.04.2022 22:28
-
ridvanmemetov4106.05.2021 05:28