8«В» — Самостоятельная работа №2.

Задача 1. «Большой сдвиг»

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

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

Пример

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

Задача 2. «Победители олимпиады»

Даны два списка: список участников олимпиады и список набранных ими баллов. Победителем олимпиады считается школьник (или несколько школьников), набравший наибольший балл среди участников.

Напишите программу, которая выведет фамилию победителя (или победителей, если их несколько).

В первой строке через пробел вводятся фамилии участников. Во второй строке через пробел вводятся набранные ими баллы (целые неотрицательные числа). Гарантируется, что количества элементов в первом и втором списках одинаковы.

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

Примеры

Ввод Вывод
Petrov Ivanov Sidorov
10 5 10
Petrov Sidorov
Cheburashka Gena Shapoklyak Galya
20 2 3 7
Cheburashka

Задача 3. «Сжатие списка»

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

Пример

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

Задача 4. «Заполнение по спирали»

Дано целое N > 0. Заполните двумерный массив размером N×N числами от 1 до N×N по спирали, как показано в примерах. Выведите полученный массив, отводя на вывод каждого элемента ровно 4 символа.

Примеры

Ввод Вывод
3
   1   2   3
8 9 4
7 6 5
4
   1   2   3   4
12 13 14 5
11 16 15 6
10 9 8 7

Задача 5. «Кинотеатр»

В кинотеатре n рядов по m мест в каждом. В двумерном массиве хранится информация о проданных билетах: число 1 означает, что билет на данное место уже продан, число 0 означает, что место свободно.
Поступил запрос на продажу k билетов на соседние места в одном ряду. Определите, можно ли выполнить такой запрос.

Программа получает на вход числа n и m. Далее идут n строк, содержащих по m чисел (0 или 1), разделённых пробелами. Затем дано число k.

Программа должна вывести номер ряда, в котором есть k подряд идущих свободных мест. Если таких рядов несколько, то выведите номер наименьшего подходящего ряда. Если подходящего ряда нет, выведите число 0.

Пример

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