Списки продолжаются

K: Количество различных элементов

Дан список, упорядоченный по неубыванию элементов в нем. Определите, сколько в нем различных элементов.

Ввод Вывод
1 2 2 3 3 3
3

L: Вывести в обратном порядке

Выведите элементы данного списка в обратном порядке, не изменяя сам список.

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

M: Переставить в обратном порядке

Переставьте элементы данного списка в обратном порядке, затем выведите элементы полученного списка.

Эта задача отличается от предыдущей тем, что вам нужно изменить значения элементов самого списка, поменяв местами A[0] c A[n-1], A[1] с A[n-2], а затем вывести элементы списка подряд.

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

N: Переставить соседние

Переставьте соседние элементы списка (A[0] c A[1], A[2] c A[3] и т.д.). Если элементов нечетное число, то последний элемент остается на своем месте.

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

O: Циклический сдвиг вправо

Циклически сдвиньте элементы списка вправо (A[0] переходит на место A[1], A[1] на место A[2], ..., последний элемент переходит на место A[0]).

Используйте минимально возможное количество операций присваивания.

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

P: Переставить min и max

В списке все элементы различны. Поменяйте местами минимальный и максимальный элемент этого списка.

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

Q: Удалить элемент

Дан список из чисел и индекс элемента в списке k. Удалите из списка элемент с индексом k, сдвинув влево все элементы, стоящие правее элемента с индексом k.

Программа получает на вход список, затем число k. Программа сдвигает все элементы, а после этого удаляет последний элемент списка при помощи метода pop().

Программа должна осуществлять сдвиг непосредственно в списке, а не делать это при выводе элементов. Также нельзя использовать дополнительный список.

Ввод Вывод
7 6 5 4 3 2 1
2
7 6 4 3 2 1

R: Вставить элемент

Дан список целых чисел, число k и значение C. Необходимо вставить в список на позицию с индексом k элемент, равный C, сдвинув все элементы имевшие индекс не менее k вправо.

Посколько при этом количество элементов в списке увеличивается, после считывания списка в его конец нужно будет добавить новый элемент, используя метод append.

Вставку необходимо осуществлять уже в считанном списке, не делая этого при выводе и не создавая дополнительного списка.

Ввод Вывод
7 6 5 4 3 2 1
2 0
7 6 0 5 4 3 2 1

S: Количество совпадающих пар

Дан список чисел. Посчитайте, сколько в нем пар элементов, равных друг другу. Считается, что любые два элемента, равные друг другу образуют одну пару, которую необходимо посчитать.

Ввод Вывод
1 2 3 2 3
2
1 1 1 1 1
10

T: Уникальные элементы

Дан список. Выведите те его элементы, которые встречаются в списке только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке.

Ввод Вывод
1 2 2 3 3 3
1

V: Самое частое число

Дан список. Не изменяя его и не используя дополнительные списки, определите, какое число в этом списке встречается чаще всего.

Если таких чисел несколько, выведите любое из них.

Ввод Вывод
1 2 3 2 3 3
3

W: Сжатие списка**

Дан список целых чисел. Требуется “сжать” его, переместив все ненулевые элементы в левую часть списка, не меняя их порядок, а все нули - в правую часть. Порядок ненулевых элементов изменять нельзя, дополнительный список использовать нельзя, задачу нужно выполнить за один проход по списку. Распечатайте полученный список.

Ввод Вывод
4 0 5 0 3 0 0 5
4 5 3 5 0 0 0 0

X: Кегельбан

N кеглей выставили в один ряд, занумеровав их слева направо числами от 1 до N. Затем по этому ряду бросили K шаров, при этом i-й шар сбил все кегли с номерами от li до ri включительно. Определите, какие кегли остались стоять на месте.

Программа получает на вход количество кеглей N и количество бросков K. Далее идет K пар чисел li, ri, при этом 1≤li≤ri≤ N.

Программа должна вывести последовательность из N символов, где j-й символ есть “I”, если j-я кегля осталась стоять, или “.”, если j-я кегля была сбита.

Ввод Вывод
10 3
8 10
2 5
3 6
I.....I...

Y: Ферзи

Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.

Программа получает на вход восемь пар чисел, каждое число от 1 до 8 - координаты 8 ферзей. Если ферзи не бьют друг друга, выведите слово NO, иначе выведите YES.

Ввод Вывод
1 7
2 4
3 2
4 8
5 6
6 1
7 3
8 5
NO
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1
YES

Z: Большой сдвиг

Дан список из N (1 ≤ N ≤ 100000) целых чисел и число K (|K| < 100000). Циклически сдвиньте список на |K| элементов вправо, если K – положительное, и влево, если отрицательное число.

Программа получает на вход список целых чисел, затем число K.

Решение должно иметь сложность O(N), то есть не должно зависеть от K. Дополнительным списком пользоваться нельзя.

Ввод Вывод
5 3 7 4 6
3
7 4 6 5 3