Skip to content

Алгоритмы и структуры данных

License

Notifications You must be signed in to change notification settings

Skrapivn/Algoritms

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Алгоритмы и структуры данных

В данном репозитории собраны некоторые задачи по алгоритмам.

Оглавление

Ближайший_ноль

Тимофей ищет место, чтобы построить себе дом. Улица, на которой он хочет жить, имеет длину n, то есть состоит из n одинаковых идущих подряд участков. Каждый участок либо пустой, либо на нём уже построен дом.

Общительный Тимофей не хочет жить далеко от других людей на этой улице. Поэтому ему важно для каждого участка знать расстояние до ближайшего пустого участка. Если участок пустой, эта величина будет равна нулю — расстояние до самого себя. Помогите Тимофею посчитать искомые расстояния. Для этого у вас есть карта улицы. Дома в городе Тимофея нумеровались в том порядке, в котором строились, поэтому их номера на карте никак не упорядочены. Пустые участки обозначены нулями.

Формат ввода

В первой строке дана длина улицы —– n (1 ≤ n ≤ 10^6). В следующей строке записаны n целых неотрицательных чисел — номера домов и обозначения пустых участков на карте (нули). Гарантируется, что в последовательности есть хотя бы один ноль. Номера домов (положительные числа) уникальны и не превосходят 10^9.

Формат вывода

Для каждого из участков выведите расстояние до ближайшего нуля. Числа выводите в одну строку, разделяя их пробелами.

Пример 1

Ввод:

5
0 1 4 9 0

Вывод: 0 1 2 1 0

Пример 2

Ввод:

6
0 7 9 4 8 20

Вывод: 0 1 2 3 4 5

nearest_zero.py

⬆️Оглавление

Ловкость_рук

Игра «Тренажёр для скоростной печати» представляет собой поле из клавиш 4x4. В нём на каждом раунде появляется конфигурация цифр и точек. На клавише написана либо точка, либо цифра от 1 до 9.

В момент времени t игрок должен одновременно нажать на все клавиши, на которых написана цифра t. Гоша и Тимофей могут нажать в один момент времени на k клавиш каждый. Если в момент времени t нажаты все нужные клавиши, то игроки получают 1 балл. Найдите число баллов, которое смогут заработать Гоша и Тимофей, если будут нажимать на клавиши вдвоём. image

Формат ввода

В первой строке дано целое число k (1 ≤ k ≤ 5). В четырёх следующих строках задан вид тренажёра –— по 4 символа в каждой строке. Каждый символ —– либо точка, либо цифра от 1 до 9. Символы одной строки идут подряд и не разделены пробелами.

Формат вывода

Выведите единственное число –— максимальное количество баллов, которое смогут набрать Гоша и Тимофей.

Пример 1

Ввод:

3
1231
2..2
2..2
2..2

Вывод: 2

Пример 2

Ввод:

4
1111
9999
1111
9911

Вывод: 1

Пример 3

Ввод:

4
1111
1111
1111
1111

Вывод: 0

hand_agility.py

⬆️Оглавление

Дек

Гоша реализовал структуру данных Дек, максимальный размер которого определяется заданным числом. Методы push_back(x), push_front(x), pop_back(), pop_front() работали корректно. Но, если в деке было много элементов, программа работала очень долго. Дело в том, что не все операции выполнялись за O(1). Помогите Гоше! Напишите эффективную реализацию. Внимание: при реализации используйте кольцевой буфер.

Формат ввода

В первой строке записано количество команд n — целое число, не превосходящее 100000. Во второй строке записано число m — максимальный размер дека. Он не превосходит 50000. В следующих n строках записана одна из команд:

push_back(value) – добавить элемент в конец дека. Если в деке уже находится максимальное число элементов, вывести «error». push_front(value) – добавить элемент в начало дека. Если в деке уже находится максимальное число элементов, вывести «error». pop_front() – вывести первый элемент дека и удалить его. Если дек был пуст, то вывести «error». pop_back() – вывести последний элемент дека и удалить его. Если дек был пуст, то вывести «error». Value — целое число, по модулю не превосходящее 1000.

Формат вывода

Выведите результат выполнения каждой команды на отдельной строке. Для успешных запросов push_back(x) и push_front(x) ничего выводить не надо.

Пример 1

Ввод:

4
4
push_front 861
push_front -819
pop_back
pop_back

Вывод:

861
-819
Пример 2

Ввод:

7
10
push_front -855
push_front 0
pop_back
pop_back
push_back 844
pop_back
push_back 823

Вывод:

-855
0
844

deque.py

⬆️Оглавление

Автор: Sergey K.

About

Алгоритмы и структуры данных

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published