Ежедневно диспетчеру железнодорожной станции "Москва-Сортировочная" приходится переставлять вагоны во многих поездах, чтобы они шли в заданном порядке. Для этого диспетчер может расцепить пришедший на станцию состав в произвольных местах и переставить образовавшиеся сцепки из одного или нескольких вагонов в произвольном порядке. Порядок вагонов в одной сцепке менять нельзя, также нельзя развернуть всю сцепку так, чтобы последний вагон в сцепке оказался первым в ней.
Диспетчер просит вашей помощи в определении того, какое минимальное число соединений между вагонами необходимо расцепить, чтобы переставить вагоны в составе в требуемом порядке.
В первой строке входного файла содержится целое число N, (1N100). Во второй строке содержится перестановка натуральных чисел от 1 до N (то есть все натуральные числа от 1 до N в некотором порядке). Числа разделяются одним пробелом. Эта перестановка задает номера вагонов в приходящем на станцию составе. Требуется, чтобы в уходящем со станции составе вагоны шли в порядке их номеров.
Программа должна записать в выходной файл единственное целое число, равное минимальному количеству соединений между вагонами, которое нужно расцепить в данном составе, чтобы их можно было переставить по порядку.
4 3 1 2 4
2
5 5 4 3 2 1
4
2 1 2
0
Около Петиного университета недавно открылось новое кафе, в котором действует следующая система скидок: при каждой покупке более чем на 100 рублей покупатель получает купон, дающий право на один бесплатный обед (при покупке на сумму 100 рублей и меньше такой купон покупатель не получает).
Однажды Пете на глаза попался прейскурант на ближайшие N дней. Внимательно его изучив, он решил, что будет обедать в этом кафе все N дней, причем каждый день он будет покупать в кафе ровно один обед. Однако стипендия у Пети небольшая, и поэтому он хочет по максимуму использовать предоставляемую систему скидок так, чтобы его суммарные затраты были минимальны. Требуется найти минимально возможную суммарную стоимость обедов и номера дней, в которые Пете следует воспользоваться купонами.
В первой строке входного файла записано целое число N (0≤N≤100). В каждой из последующих N строк записано одно целое число, обозначающее стоимость обеда в рублях на соответствующий день. Стоимость — неотрицательное целое число, не превосходящее 300.
В первой строке выдайте минимальную возможную суммарную стоимость обедов. Во второй строке выдайте два числа K1 и K2 — количество купонов, которые останутся неиспользованными у Пети после этих N дней и количество использованных им купонов соответственно.
В последующих K2 строках выдайте в возрастающем порядке номера дней, когда Пете следует воспользоваться купонами. Если существует несколько решений с минимальной суммарной стоимостью, то выдайте то из них, в котором значение K1 максимально (на случай, если Петя когда-нибудь ещё решит заглянуть в это кафе). Если таких решений несколько, выведите любое из них.
5 35 40 101 59 63
235 0 1 5
Европейская комиссия планирует принять решение о том, что официальным языком Евросоюза станет английский. Был также разработан план упрощения английской письменности, который планируется реализовать за четыре года.
Первоочередной задачей будет избавление от буквы c, которая в сочетаниях сi и сe будет изменяться на s, в сочетании ck — опускаться, а в остальных случаях заменяться на k. При этом все замены будут производиться в строгом порядке слева направо. То есть, например, в слове success сначала первая из двух букв c заменится на k, а затем вторая — на s, то есть получится suksess. А слово cck превратится в kk.
На второй год из английских слов изымут все удвоенные буквы: ee изменят на i, oo - на u, a в остальных комбинациях будут просто писать одну букву вместо двух одинаковых. Такие замены также будут делать строго в порядке слева направо. Так, слово ooo превратится в uo, а oou — просто в u (в нем сначала oo заменится на u, а затем uu — на u), слово iee превратится в i (в нем сначала ee заменится на i, а затем ii — на i).
На третий год на конце слова станут опускать букву е, если эта буква не является единственной буквой в слове.
Наконец, завершением реформы станет отмена артиклей (в английском языке три артикля: а, an и the). При этом удаляться эти артикли будут только тогда, когда они в исходном тексте были словами a, an, the. То есть, например, текст the table после реформ первых трех лет превратиться в th tabl, а после реформы четвертого года — просто в tabl. А слово aaaaa после реформы первых лет станет словом a, но поскольку изначально оно не было словом a (артиклем), то оно в итоге так и останется словом a.
Напишите программу, которая будет переводить классический английский текст на Eвроинглиш.
Во входном файле записана одна строка текста, состоящая не более чем из 200 символов: латинских строчных и заглавных букв, пробелов и знаков препинания (в тексте могут встречаться: точка, запятая, вопросительный и восклицательный знаки, двоеточие, тире, точка с запятой, открывающаяся и закрывающаяся скобки, апострофы, кавычки). Заглавные буквы могут встречаться только в начале слова. Нигде подряд не могут стоять два пробела. В начале и в конце строки не может стоять пробел. Слова отделяются друг от друга пробелами и/или знаками препинания.
В выходной файл нужно выдать преобразованную строку с учетом следующих требований:
cacao and coffee
kakao and kofi
Cinderella! Where Is The Dress???
Sinderela! Wher Is Dres???
'A' is a letter
'' is leter
!!!Hello!!!A-the-"word"
!!!Helo!!!--"word"
Мальчик Кирилл недавно придумал свой язык программирования. Он назвал его D++.
В D++ существует только один массив и 26 переменных. Переменные называются маленькими латинскими буквами от a до z. Есть 4 различных варианта операции присваивания (здесь и далее переменная — это маленькая латинская буква, задающая имя переменной, а индекс — натуральное число, задающее индекс элемента в массиве):
переменная1 <- переменная2
Значение переменной переменная1 становится равным значению переменной переменная2;
переменная <- индекс
Значение переменной переменная становится равным значению элемента массива с индексом индекс;
индекс <- переменная
Значение элемента массива с индексом индекс становится равным значению переменной переменная;
индекс1 <- индекс2
Значение элемента массива с индексом индекс1 становится равным значению элемента массива с индексом индекс2.
Других операций в языке D++ нет. В одной строке программы на D++ может быть записана только одна операция. В программе не может быть пустых строк, но могут быть незначащие пробелы.
Дана последовательность из N натуральных чисел. Все числа различны и не превосходят N. Будем считать, что эта последовательность записана в массиве языка D++ начиная с элемента с номером 1. Требуется написать программу на D++, которая упорядочит массив за наименьшее количество операций.
После выполнения программы последовательность также должна быть записана в массиве начиная с элемента с номером 1. Программа не должна использовать элементы массива с номерами меньше 1, а также с номерами больше N.
В первой строке входного файла содержится единственное число N (1N10000). Во второй строке содержится N натуральных чисел — последовательность, записанная в массиве.
Выходной файл должен содержать программу на D++, которая сортирует данную последовательность, выполняя наименьшее число операций присваивания.
2 2 1
3
Назовем строку S правильной скобочной последовательностью, если она состоит только из символов '{', '}', '[', ']', '(', ')' и выполнено хотя бы одно из следующих трех условий:
1) S — пустая строка;
2) S можно представить в виде S=S1+S2+S3+...+SN (N>1), где Si — непустые правильные скобочные последовательности, а знак "+" обозначает конкатенацию (приписывание) строк;
3) S можно представить в виде S='{'+C+'}' или S='['+C+']' или S='('+C+')', где C является правильной скобочной последовательностью.
Дана строка, состоящая только из символов '{', '}', '[', ']', '(', ')'. Требуется определить, какое минимальное количество символов надо вставить в эту строку для того, чтобы она стала правильной скобочной последовательностью.
В первой строке входного файла записана строка, состоящая только из символов '{','}', '[',']', '(',')'. Длина строки не превосходит 100 символов.
Вывести в первую строку выходного файла единственное неотрицательное целое число — ответ на поставленную задачу.
{(})
2
([{}])
0