В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
usenov777
usenov777
27.06.2022 17:59 •  Информатика

Новое правило в чемпионате мира по программированию ICPC: можно использовать три компьютера. Давайте посмотрим как это повлияла на одну из сильнейших команд с Казахстана. Кирилл,
Айбар и Султан начали писать контест.
В контесте всего n задач и длится 5 часов.
Они уже оценили время которое они потратят на каждую задачу. Кирилл решает задачу с
номером i за ai минут. Айбар за bi
. Султан за ci
.
Как и всегда нужно решить как можно больше задач с меньшим штрафом.
Штраф определяется как сумма времени решения для каждой принятой задачи.
Например, если команда сдаст первую задачу на 5 минуте, а вторую на 10 минуте то штраф
будет равен 5 + 10 = 15.
Вам нужно определить какой самый лучший результат может получить команда.

Показать ответ
Ответ:
mboyko2005
mboyko2005
09.06.2023 03:55
//Pascal ABC.NET v3.1 сборка 1172

Var
 s,sr:string;
 i,j,n:integer;
 pr:array of char=('.',',',';',':','!','?');
begin
 readln(s);
s:=s.Trim;
var ars:=s.ToWords();
s:='';
for i:=0 to ars.Length-1 do
s+=ars[i]+' ';
s:=s.Trim;
i:=0;
while i<>s.Length do
begin
inc(i);
if (s[i] in pr) and (s[i-1]=' ') then delete(s,i-1,1);
end;
i:=0;
while i<>s.Length-1 do
begin
inc(i);
if (s[i] in pr) and (s[i+1]<>' ') then insert(' ',s,i+1);
end;
s:=s.Trim;
writeln(s);
end.

Пример ввода:
Очень, очень ,очень , очень ,очень,очень много слов.
Пример вывода:
Очень, очень, очень, очень, очень, очень много слов.
0,0(0 оценок)
Ответ:
Дурачкао
Дурачкао
09.06.2023 03:55
При работе со строками можно использовать много различных решения задачи. Здесь предлагается в котором применяются только две библиотечных подпрограммы (length и delete). Можно было сделать и без delete, а можно использовать trim, например. Короче говоря, вот такой вариант программы на паскале:
var 
s,s1:string;
mn:set of char;
i,l:integer;
begin
writeln('Введите строку:');
readln(s);
mn:=['.',',',';',':','!','?'];
while s[1]=' ' do delete(s,1,1);
while s[length(s)]=' ' do delete(s,length(s),1);
while pos('  ',s)>0 do delete(s,pos('  ',s),1);
s1:=s[1];
for i:=2 to length(s)-1 do
 if not((s[i]=' ')and(s[i+1] in mn)) then s1:=s1+s[i];
s1:=s1+s[length(s)];
s:=s1[1];
for i:=2 to length(s1)-1 do
 if (s1[i] in mn)and(s1[i+1]<>' ') then s:=s+s1[i]+' ' else s:=s+s1[i];
s:=s+s1[length(s1)];
writeln(s);
end.

Пример:
Введите строку:
   Дана строка   ,состоящая из слов  ,    разделенных пробелами   .   
Дана строка, состоящая из слов, разделенных пробелами.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота