Массивы

716 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
В некотором мире сейчас 31 декабря и все веселье только начинается. Снежик Сугробович слепил N больших снежков и расположил их в ряд слева направо. На каждом i-м снежке, если считать слева (1 <= i <= N), он написал целое число ai. Он предлагает вам сыграть в игру. Снежик Сугробович разрешил сломать не более N − 1 снежков по вашему выбору. 

Допустим, осталось K снежков. Снежик Сугробович будет удовлетворен и подарит вам хороший подарок, если для каждого целого числа i (1<=i<=K) на i-м снежке, если считать слева оставшиеся снежки, будет написано целое число i.
Найдите минимальное количество снежков, которое вам нужно сломать, чтобы получить подарок. Если не получится, то выведите -1.

Входные данные
В первой строке программа получает на вход целое число N (1 <= N <= 200000). Во второй строке - N натуральных чисел ai (1<=ai<=N). 

Выходные данные
Выведите минимальное количество снежков, которые нужно сломать, чтобы получить подарок, или выведите -1, если это невозможно сделать.
 
Примеры
Входные данные Выходные данные Пояснение
1 3
2 1 2
1 Сломайте первый снежок, числа на остальных снежках будут удовлетворять условию Снежика Сугробовича
2 3
2 2 2
-1  
3 10
3 1 4 1 5 9 2 6 5 3
7  
4 1
1
0  
Робот перемещается по клетчатой плоскости и рисует спираль. Исходно он находится в клетке (0, 0) и направлен в сторону увеличения первой координаты.
Далее он действует по следующему алгоритму: совершает d перемещений вперед, затем поворачивает налево и снова делает d перемещений вперед. После этого он поворачивает налево и умножает значение d на k. Затем робот повторяет описанный процесс. Робот останавливается, сделав суммарно ровно n перемещений.
Требуется вывести картинку, на которой отмечены клетки, на которых побывал робот.

Входные данные
На вход подаются целые числа n, d и k (1 ≤ n ≤ 1000, 1 ≤ d ≤ 100, 2 ≤ k ≤ 5).

Выходные данные
Пусть минимальный прямоугольник из клеток, содержащий все посещенные роботом клетки, имеет высоту h и ширину w. На первой строке выведите числа h и w, разделенные пробелом. Следующие h строк должны содержать по w символов, выведите «*» для клетки, посещенной роботом и «.» для не посещенной.
Примеры
Входные данные Выходные данные
1 13 2 2
5 5
*****
*...*
*.***
*....
**...
Даны два числа n и m. Создайте двумерный массив размерностью nхm и заполните его по следующему правилу:
- числа, стоящие в строке 0 или в столбце 0 равны 1 (A[0][j]=1, A[i][0]=1);
- значения остальных элементов массива должны быть равны сумме элементов, стоящих на один слобец левее и на одну строку выше от этого элемента. 

Входные данные
Программа получает на вход два числа n и m.

Выходные данные
Выведите на экран получившийся массив.
 
Примеры
Входные данные Выходные данные
1
3 3
1 1 1
1 2 3
1 3 6
Даны два числа n и m. Создайте двумерный массив A[n][m], заполните его таблицей умножения A[i][j]=i*j и выведите на экран. При этом нельзя использовать вложенные циклы, все заполнение массива должно производиться одним циклом.
Входные данные
Программа получает на вход два числа n и m – количество строк и столбцов, соответственно.

Выходные данные
Программа должна вывести  полученный массив. Числа разделяйте одним пробелом.
 
Примеры
Входные данные Выходные данные
1 3 3 0   0   0
0   1   2
0   2   4
В данной задаче вам предлагается автоматизировать оценку результата экспресс теста.
Вам дана двухцветная картинка размером 10×20. Для обозначения цветов используются символы «#» и «.». Тест
считается отрицательным, если на картинке изображена одна вертикальная полоска и положительным, если три. В любом
другом случае тест считается испорченным.
Полоской будем считать область картинки 10×k, состоящую из символов «#», где k может быть произвольным. При этом
все соседние клетки с этой областью должны быть «.». Полоска может находиться на границе картинки.

Входные данные
В первой строке входных данных задано число t - число тестов (1 ≤ t ≤ 30). В следующих t⋅10+(t−1) строках заданы картинки
тестов. Соседние картинки разделены пустыми строками. После последней картинки, пустой строки нет.
Каждая картинка состоит из 10 строк по 20 символов, каждый из которых либо «#», либо «.».

Выходные данные
Для каждой картинки выведите результат теста в отдельной строке:
Negative - если тест отрицательный;
Positive - если тест положительный;
Incorrect - если тест испорчен.

 Примеры
Входные данные Выходные данные
1
4
.........##.........
.........##.........
.........##.........
.........##.........
.........##.........
.........##.........
.........##.........
.........##.........
.........##.........
.........##.........

.........##.........
.........##.........
.........##.........
.........#..........
.........##.........
.........##.........
.........##.........
.........##.........
.........##.........
.........##.........

..#.......#.....###.
..#.......#.....###.
..#.......#.....###.
..#.......#.....###.
..#.......#.....###.
..#.......#.....###.
..#.......#.....###.
..#.......#.....###.
..#.......#.....###.
..#.......#.....###.

..#.......#.....###.
..#.......#.....###.
..##......#.....###.
..##......#.....###.
..##......#.....###.
..##......#.....###.
..#.......#.....###.
..#.......#.....###.
..##......#.....###.
..#.......#.....###.
Negative
Incorrect
Positive
Incorrect
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Победитель определяется по лучшему результату. Определите количество участников состязаний, которые разделили первое место, то есть определите количество строк в массиве, которые содержат значение, равное наибольшему.

Входные данные
Программа получает на вход два числа n и m, являющиеся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по m чисел, являющихся элементами массива.

Выходные данные
Программа должна вывести  одно число - количество победителей соревнования.

 Примеры
Входные данные Выходные данные
1 3 3
3 1 2
1 3 4
3 3 3
1
Громозека имеет последовательность целых чисел A длины N. Он свободно выбирает целое число b. Здесь ему станет грустно, если Ai и b+i находятся далеко друг от друга. Точнее, печаль Громозеки рассчитывается следующим образом:
\(abs(A_1-(b+1))+abs(A_2-(b+2))+...+abs(A_N-(b+N))\).
Здесь \(abs(x) \)- это функция, которая возвращает абсолютное значение x. Найдите минимально возможную печаль Громозеки.

Входные данные
В первой строке записано целое число N  (\(1<=N<=2 \cdot 10^5\)). Во второй строке записано N целых чисел Ai (\(1<=A_i<=10^9\)).

Выходные данные
Выведите на экран минимально возможную печаль Громозеки.
 
Примеры
Входные данные Выходные данные Пояснение
1 5
2 2 3 5 5
2 Если мы выберем b = 0, печаль Громозеки будет \(\) 
abs (2- (0 + 1)) + abs (2-(0 + 2))+ abs (3-(0 + 3)) + abs (5- (0 + 4)) + abs(5-(0 + 5)) = 2.
Любой другой выбор b не делает печаль Громозеки меньше 2, поэтому ответ - 2.
2 9
1 2 3 4 5 6 7 8 9
0  
3 6
6 5 4 3 2 1
18  
4 7
1 1 1 1 2 3 4
6  
Международный банк Либанк имеет N отделений по всему миру. После окончания пандемии короновируса, финансовый отдел банка решил проверить отчетность всех отделений. Выяснилось, что некоторые отделения остались в долгу, а некоторые даже успели получить прибыль. Теперь финансовые директора решили спасти все отделения с минимальным одинаковым долгом. Они хотят понять, можно ли покрыть все их долги, если использовать средства всех отделений с минимальной одинаковой прибылью. Вам как сотруднику IT отдела было выдано данное задание. Финансовые директора ждут от вас ответа!

Входные данные
В первой строке задается число N (2<=N<=500) - количество отделений Либанка. Во второй строке записаны N чисел a(-1000<=ai<=1000, 0<=i<N) - положительными числами обозначены прибыли отделений, отрицательными - долги. Известно, что хотя бы одно отделение Либанка получило прибыль и хотя бы одно отделение осталось в долгу.

Выходные данные
Если все указанные отделения можно спасти, выведите на экран сумму, которая останется после покрытия всех долгов отделений с минимальным одинаковым долгом. Если спасти нельзя выведите отрицательное число, показывающая сколько денег не хватает.
 
Примеры
Входные данные Выходные данные
1 10
-1 4 -10 0 -8 -1 -8 8 -2 8 
2
Сергей Николаевич любит заниматься статистикой. В его распоряжение попался список роста всех учащихся лицея. К его огорчению все данные были записаны в произвольном порядке и к тому же занимали несколько страниц. Сергей Николаевич хочет определить сколько учащихся имеют такой же рост, как у самого высокого ученика, а также сколько учащихся имеют такой же рост, как у самого низкого ученика. Сергей Николаевич попросил вас написать для него программу, решающую данную задачу.

Входные данные
В первой строке вводится число N - количество людей в списке (1<N<=105). Во второй строке вводятся N чисел - возраст людей в списке (каждое число в диапазоне от 100 до 220).

Выходные данные
Выведите на экран два числа в одной строке через пробел: сколько учащихся имеют такой же рост, как у самого высокого ученика, а также сколько учащихся имеют такой же рост, как у самого низкого ученика.
 
Примеры
Входные данные Выходные данные
1
10
212 107 165 205 122 116 177 212 107 212
3 2
Сергей Николаевич любит заниматься статистикой. В его распоряжение попался список роста всех учащихся лицея. К его огорчению все данные были записаны в произвольном порядке и к тому же занимали несколько страниц. Узнав рост самого высокого и самого низкого из учащихся, Сергей Николаевич стал искать эти данные по списку. На чтение одной записи у него уходит 1 миллисекунда. Определить сколько миллисекунд понадобится Сергею Николаевичу, чтобы найти записи о самом высоком и самом низком учениках. Если таких учеников несколько Сергей Николаевич берет первого встретившегося.

Входные данные
В первой строке вводится число N - количество людей в списке (1<N<=105). Во второй строке вводятся N чисел - рост людей в списке (каждое число в диапазоне от 100 до 220).

Выходные данные
Выведите на экран одно число - количество милисекунд, которое понадобиться Сергею Николаевичу, чтобы найти требуемые записи.
 
Примеры
Входные данные Выходные данные
1
10
112 136 165 205 122 116 177 212 107 169  
9
Сергей Николаевич любит заниматься статистикой. В его распоряжение попался список роста всех учащихся лицея. К его огорчению все данные были записаны в произвольном порядке и к тому же занимали несколько страниц. На одной странице помещается запись о 25 учащихся. Помогите Сергею Николаевичу определить на какой странице находится информация о первом самом высоком и первом самом низком учениках лицея. Страницы нумеруются с 1.

Входные данные
В первой строке вводится число N - количество людей в списке (1<N<=105). Во второй строке вводятся N чисел - рост людей в списке (каждое число в диапазоне от 100 до 220).

Выходные данные
Выведите на экран 2 числа в одной строке через пробел:
- первое число - номер страницы, на которой располагается информация о первом самом высоком ученике;
- второе число - номер страницы, на которой располагается информация о первом самом низком ученике. 
 
Примеры
Входные данные Выходные данные
1
10
112 136 165 205 122 116 177 212 107 169  
1 1

Дан массив, состоящий из N целых чисел. Напишите программу, которая выводит четные элементы массива (то есть те элементы, которые являются четными числами), имеющие четные индексы (нумерация элементов начинается с 0).

Входные данные
Сначала задано число N — количество элементов в массиве (1<=N<=100). Далее через пробел записаны N чисел — элементы массива. Массив состоит из целых чисел, по модулю не превышающих 100.
 
Выходные данные
Необходимо вывести все четные элементы массива, имеющие четные индексы.
 
 
Примеры
Входные данные Выходные данные
1 5
1 1 3 4 6
6

Дан массив, состоящий из N целых чисел. Напишите программу, которая выводит четные элементы массива (то есть те элементы, которые являются четными числами), имеющие нечетные индексы (нумерация элементов начинается с 0).

Входные данные
Сначала задано число N — количество элементов в массиве (1<=N<=100). Далее через пробел записаны N чисел — элементы массива. Массив состоит из целых чисел, по модулю не превышающих 100.
 
Выходные данные
Необходимо вывести в одной строке через пробел все четные элементы массива, имеющие нечетные индексы. 
 
 
Примеры
Входные данные Выходные данные
1 5
1 2 3 4 6
2 4

Дан массив, состоящий из N целых чисел. Напишите программу, которая выводит нечетные элементы массива (то есть те элементы, которые являются нечетными числами), имеющие четные индексы (нумерация элементов начинается с 0).

Входные данные
Сначала задано число N — количество элементов в массиве (1<=N<=100). Далее через пробел записаны N чисел — элементы массива. Массив состоит из целых чисел, по модулю не превышающих 100.
 
Выходные данные
Необходимо вывести все нечетные элементы массива, имеющие четные индексы.
 
 
Примеры
Входные данные Выходные данные
1 5
1 1 3 4 6
1 3

Дан массив, состоящий из N целых чисел. Напишите программу, которая выводит нечетные элементы массива (то есть те элементы, которые являются нечетными числами), имеющие нечетные индексы (нумерация элементов начинается с 0).

Входные данные
Сначала задано число N — количество элементов в массиве (1<=N<=100). Далее через пробел записаны N чисел — элементы массива. Массив состоит из целых чисел, по модулю не превышающих 100.
 
Выходные данные
Необходимо вывести все нечетные элементы массива, имеющие нечетные индексы.
 
 
Примеры
Входные данные Выходные данные
1 5
1 1 3 4 6
1

Дан массив, состоящий из N целых чисел. Напишите программу, которая выводит нечетные элементы массива (то есть те элементы, которые являются нечетными числами).

Входные данные
Сначала задано число N — количество элементов в массиве (1<=N<=100). Далее, с новой строки, через пробел записаны N чисел — элементы массива. Массив состоит из целых чисел, по модулю не превышающих 100.
 
Выходные данные
Необходимо вывести все нечетные элементы массива.
 
 
Примеры
Входные данные Выходные данные
1 5
1 2 3 4 5
1 3 5

Дан массив, состоящий из целых чисел. Нумерация элементов начинается с 0. Напишите программу, которая выведет элементы массива с четными индексами (0, 2, 4...).


Входные данные
Сначала задано число N — количество элементов в массиве (1<=N<=100). Далее через пробел записаны N целых исел — элементы массива. 

Выходные данные
Необходимо вывести все элементы массива с чётными индексами.
 
Примеры
Входные данные Выходные данные
1 6
4 5 3 4 2 3
4 3 2
 
Входные данные
В первой строке вводится число N (1<=N<=100)  - количество элементов одномерного массива. Во второй строке вводится N целых чисел (все числа по модулю не более 100).

Выходные данные
Выведите одно число - количество отрицательных элементов.
 
Примеры
Входные данные Выходные данные
1 5
1 -5 -3 -4 5
3
Входные данные
В первой строке вводится число N (1<=N<=20)  - количество элементов одномерного массива. Во второй строке вводится N целых, не равных нулю чисел (все числа по модулю не более 100).

Выходные данные
Выведите одно число - количество положительных элементов.
 
Примеры
Входные данные Выходные данные
1 5
1 -5 -3 -4 5
2
Известно число жителей, проживающих в каждом доме улицы. Нумерация домов идет подряд, начинается с 1. Дома с нечетными номерами расположены на одной стороне улицы, с четными на другой. Определите, сколько человек живет на нечетной стороне улицы.

Входные данные
В первой строке вводится число N (1<=N<=20)  - количество элементов одномерного массива. Во второй строке вводится N целых чисел (каждое число не более 1000).

Выходные данные
Выведите одно число - количество человек, которые живут на нечетной стороне улицы.
 
Примеры
Входные данные Выходные данные
1
6
202 103 454 287 282 238 
938
Поделиться
Класснуть