Плюсануть
Поделиться
Класснуть
Запинить


Олимпиадный тренинг

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

Радость Громозеки

Массивы Алгоритмы обработки "Два указателя"

Громозека имеет последовательность целых чисел A длины N. Он сделает три среза в последовательности A и разделит ее на четыре (непустые) смежные подпоследовательности B, C, D и E. Положения срезов он выбирает произвольно. Пусть P, Q, R, S - суммы элементов в B, C, D,  E соответственно. Громозека будет счастлив, когда абсолютная разница между максимумом и минимумом между P, Q, R, S будет минимальной. Найдите минимально возможную абсолютную разницу между максимумом и минимумом между P, Q, R, S.

Входные данные
В первой строке записано целое число N  (1 <= N <= 2·105). Во второй строке записано N целых чисел Ai (1 <= Ai <= 109).

Выходные данные
Выведите на экран минимально возможную абсолютную разницу между максимумом и минимумом между P, Q, R, S.
 

Примеры
Входные данные Выходные данные Пояснения
1 5
3 2 4 1 2
2 Если разделить A на B, C, D, E = (3), (2), (4), (1,2), то P = 3, Q = 2, R = 4, S = 1 + 2 = 3.
Здесь максимум и минимум среди P, Q, R, S равны 4 и 2, с абсолютной разницей 2.
Мы не можем сделать абсолютную разницу между максимумом и минимумом меньше 2, поэтому ответ - 2.
2 10
10 71 84 33 6 47 23 25 52 64
36  
3 7
1 2 3 1000000000 4 5 6
999999994  

Ты решишь это?

Одномерные массивы Алгоритмы обработки

Есть N частей некоторого исходного кода. Характеристики i-й части кода представлены M целыми числами Ai1, Ai2, ..., AiM . Вам даны целые числа B1, B2, ..., BM и C.
i-я часть кода правильно решает задачу тогда и только тогда, когда \( A_{i1}\cdot B_1 + A_{i2}\cdot B_2 + ...+ A_{iM}\cdot B_M +C>0\).
Среди N частей исходного кода найдите количество, которые правильно решают эту задачу.

Входные данные
В первой строке заданы три числа через пробел: N, M (1 <= N, M <= 20) и C (-100 <= C <= 100). Во второй строке задано  M чисел Bi (-100 <= B<= 100). Каждая из следующих N строк содержит чисел Ai (-100 <= Aij <= 100, 1 <= i <= N, 1 <= j <= M).

Выходные данные
Выведите одно число - ответ на задачу.
 

Примеры
Входные данные Выходные данные
1 2 3 -10
1 2 3
3 2 1
1 2 2
1
2 5 2 -4
-2 5
100 41
100 40
-3 0
-6 -2
18 -13
2
3 3 3 0
100 -100 0
0 100 100
100 100 100
-100 100 100
0

Роза ветров

Одномерные массивы Алгоритмы обработки

При выборе места строительства жилого комплекса при металлургическом комбинате необходимо учитывать "розу ветров" (следует расположить жилой комплекс так, чтобы частота ветра со стороны металлургического комбината была бы минимальной). Для этого в течении года проводилась регистрация направления ветра в районе строительства. Данные представлены в виде массива, в котором направление ветра ветра за каждый день (365) кодируется следующим образом: 
1 - северный (N),
2 - южный (S)
3 - восточный (E)
4 - западный (W)
5 - северо-западный (NW)
6 - северо - восточный (NE)
7 - юго-западный (SW)
8 - юго-восточный (SE).
Определить, как должен быть расположен жилой комплекс по отношению к комбинату

Входные данные: 
В первой строке подается 365 значений от 1 до 8 (направление ветра)

Выходные данные:
Вывести соответствующие буквы (аббревиатуру - смотри список выше), с какой стороны следует построить жилой комплекс
 

Игра "Жизнь". Простой вариант

Двумерные массивы Алгоритмы обработки

В некоторых клетках квадрата \( N\ х\ N\) живут микроорганизмы (не более одного в одной клетке). Каждую секунду происходит следующее:
– все микроорганизмы, у которых менее 2-х соседей, умирают от скуки (соседями называются микроорганизмы, живущие в клетках, имеющих общую сторону или вершину);
– все микроорганизмы, у которых более 3-х соседей, умирают от перенаселенности;
– на всех пустых клетках, у которых ровно в трех соседних клетках жили микроорганизмы, появляются новые микроорганизмы.
Все изменения происходят одновременно, то есть для каждой клетки сначала выясняется ее судьба, а затем происходят изменения сразу во всех клетках.
Требуется по данной конфигурации определить, во что она превратится через \(T\) секунд.

Входные данные: В первой строке вводятся два натуральных числа –\( N\) (\(1 \leq N \leq 10\)) и \(T\) (\(1 \leq T \leq 100\)). Далее записано \( N\) строчек по \( N\) чисел, описывающих начальную конфигурацию (0 – пустая клетка, 1 – микроорганизм). Числа в строках разделены пробелами.
Выходные данные: Требуется вывести \( N\) строк по \( N\) чисел – описание конфигурации через T секунд (в том же формате, как и во входных данных).

Примеры
Входные данные Выходные данные
1 3 1
1 0 1
1 0 1
1 0 1
0 0 0
1 0 1
0 0 0
2 2 2
1 1
1 1
1 1
1 1
3 5 10
1 0 1 1 0
0 1 0 0 0
0 0 0 1 0
0 0 0 0 0
0 1 0 1 0
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0

Спрятанная карта

Одномерные массивы Алгоритмы обработки

В колоде у Громозеки находятся карты, на которых написано по одному целому числу. Каждое число в колоде встречается ровно 4 раза. 
Таким образом, в колоде имеются 4 карты с числом 1, 4 карты с числом 2, ..., 4 карты с числом N. Всего в колоде 4*N карт.

Громозека перетасовал эти карты, а затем спрятал одну из них и дал вам стопку оставшихся 4*N-1 карт. На i-й карте (1<= i <=4*N−1) из стопки написано целое число Ai.

Найдите целое число, записанное на карте, которую спрятал Громозека.

Входные данные
Программа получает на вход две строки. Первая строка содержит целое число N (1 <= N <= 105).  Вторая строка содержит 4*N-1 целых чисел Ai (1 <= Ai <= 4*N−1. 1<= i <=4*N−1). Для каждого (1<=k<=N) существует не более 4 индексов i, таких, что Ai=k.


Выходные данные
Выведите ответ на задачу.
 
 

Примеры
Входные данные Выходные данные
1 3
1 3 2 3 3 2 2 1 1 1 2
3
2 1
1 1 1
1
3 4
3 2 1 1 2 4 4 4 4 3 1 3 2 1 3
2

Количество элементов, больших обоих соседей

Одномерные массивы Алгоритмы обработки

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


Входные данные

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


Выходные данные

Необходимо вывести количество элементов массива, у которых два соседа и которые при этом строго больше обоих своих соседей.

 
Примеры
Входные данные Выходные данные
1
5
1 2 3 4 5
0
2
5
2 3 2 4 3
2

Найти и посчитать

Массивы Алгоритмы обработки

Даны две целочисленные последовательности, каждая из которых имеет длину NA = (A1, A2, ..., AN) и B = (B1, B2, ..., BN).
Все элементы A различны. Все элементы B тоже разные.

Выведите следующие два значения.

  1. Количество целых чисел, содержащихся в обоих и B, появляющихся в одной и той же позиции в двух последовательностях. Другими словами, количество целых i чисел такое, что A= Bi.
  2. Количество целых чисел, содержащихся в обоих и B, появляющихся в разных позициях в двух последовательностях. Другими словами, количество пар целых (i, j) чисел, таких, что A= Bи i ≠ j.


Входные данные
Программа получает на вход три строки. В первой строке записано одно число N (1 <= N <= 1000) - количество чисел последовательности. Во второй строке записаны числа A1, A2, ..., AN, все числа различные. В третьей строке - числа B1, B2, ..., B, все числа различные (1 <= Ai, Bi <= 109). 

Выходные данные
Выведите в первой строке ответ на первый вопрос, во второй строке - на второй.
 
 
Примеры
Входные данные Выходные данные
1
4
1 3 5 2
2 3 1 4
1
2 
2
3
1 2 3
4 5 6
0
0

Башни 2.0

Задача на реализацию Структуры данных Структуры данных Алгоритмы обработки Линейные алгоритмы Алгоритмы обработки

В компьютерной игре есть n башен, высота i-й башни равна ai метров. Определим расстояние между двумя башнями с индексами i и j как |i−j|. Разрешается прыгнуть с i-й башни на j-ю башню тогда и только тогда, когда не существует такого индекса 1 <= k <= n, такого, что расстояние от i-й до j-й башни не меньше расстояния от i-й башни до k-й башни, и k-я башня имеет большую высоту, чем j-я. Башня j достижима из башни i если существует последовательность корректных прыжков, которая начинается в i-й башне и заканчивается в j-й. Посчитайте для каждой башни количество достижимых из неё башен, включая её саму.


Входные данные

Первая строка входных данных содержит одно целое число n (1 <= <= 500000) - количество башен.

Вторая строка входных данных содержит n чисел a1, a2, ..., an (1 <= a<= 109) - высоты башен.


Выходные данные
Выведите n чисел, i-е из которых должно быть равным количеству башен, достижимых из i-й башни.
 
Примечание

В первом примере с 1-й башни можно прыгнуть на башни 1 и 5. Любая другая башня имеет меньшую высоту, чем башня 1, поэтому туда нельзя прыгнуть (в качестве k можно выбрать 1). Множество достижимых из 1-й башни также состоит из башен 1 и 5. Со второй башни можно прыгнуть на башни 1, 2, и 5, они же являются множеством достижимых. С третьей башни можно прыгнуть на башни 2, 3, 5. Однако, башня 1 также является достижимой, поскольку можно сделать два прыжка: 3→2→1. Таким образом, получается 4 достижимые башни. С 4-й башни можно прыгнуть на башни 4 и 5, они же являются единственными достижимыми. Из 5-й башни достижима только она сама.

Во втором примере из 1-й и из 2-й башни достижимы башни 1,2,3,4,5. Из 3-й башни достижимы башни 3,4,5. Из 4-й и 5-й башни достижимы башни 4,5. Из 6-й башни достижимы башни 4,5,6. Из 7-й башни достижимы башни 4,5,6,7.

 
 
Примеры
Входные данные Выходные данные
1
5
7 6 3 4 10
2 3 4 2 1 
2
7
1 1 1 2 2 1 1
5 5 3 2 2 3 4 

Башни 2.0

Задача на реализацию Структуры данных Структуры данных Алгоритмы обработки Линейные алгоритмы Алгоритмы обработки

В компьютерной игре есть n башен, высота i-й башни равна ai метров. Определим расстояние между двумя башнями с индексами i и j как |i−j|. Разрешается прыгнуть с i-й башни на j-ю башню тогда и только тогда, когда не существует такого индекса 1 <= k <= n, такого, что расстояние от i-й до j-й башни не меньше расстояния от i-й башни до k-й башни, и k-я башня имеет большую высоту, чем j-я. Башня j достижима из башни i если существует последовательность корректных прыжков, которая начинается в i-й башне и заканчивается в j-й. Посчитайте для каждой башни количество достижимых из неё башен, включая её саму.


Входные данные

Первая строка входных данных содержит одно целое число n (1 <= <= 500000) - количество башен.

Вторая строка входных данных содержит n чисел a1, a2, ..., an (1 <= a<= 109) - высоты башен.


Выходные данные
Выведите n чисел, i-е из которых должно быть равным количеству башен, достижимых из i-й башни.
 
Примечание

В первом примере с 1-й башни можно прыгнуть на башни 1 и 5. Любая другая башня имеет меньшую высоту, чем башня 1, поэтому туда нельзя прыгнуть (в качестве k можно выбрать 1). Множество достижимых из 1-й башни также состоит из башен 1 и 5. Со второй башни можно прыгнуть на башни 1, 2, и 5, они же являются множеством достижимых. С третьей башни можно прыгнуть на башни 2, 3, 5. Однако, башня 1 также является достижимой, поскольку можно сделать два прыжка: 3→2→1. Таким образом, получается 4 достижимые башни. С 4-й башни можно прыгнуть на башни 4 и 5, они же являются единственными достижимыми. Из 5-й башни достижима только она сама.

Во втором примере из 1-й и из 2-й башни достижимы башни 1,2,3,4,5. Из 3-й башни достижимы башни 3,4,5. Из 4-й и 5-й башни достижимы башни 4,5. Из 6-й башни достижимы башни 4,5,6. Из 7-й башни достижимы башни 4,5,6,7.

 
 
Примеры
Входные данные Выходные данные
1
5
7 6 3 4 10
2 3 4 2 1 
2
7
1 1 1 2 2 1 1
5 5 3 2 2 3 4 

Счастливчики! 💰

Массивы Алгоритмы обработки

В ресторане официанты получают чаевые. Строки — официанты, столбцы — дни. Найдите сумму всех чаевых только тех официантов, которые заработали выше среднего.

Формат входных данных: Первая строка содержит два целых числа n и m (1 ≤ n, m ≤ 100) — количество официантов и дней. Следующие n строк содержат по m целых неотрицательных чисел — чаевые в рублях.

Формат выходных данных: Одно целое число — сумма всех элементов строк, чья сумма строго больше среднего значения по всей матрице.

Примечание
В примере первый официант заработал 100, второй - 260, третий 120. Средний заработок - 160. В искомую сумму берем только заработок второго официанта - 260. Ответ 260

A10.2 ~ эквивалент

Алгоритмы обработки

Какое выражение эквивалентно df[~(df['R'] == 'Азия')]?

  1. df[df['R'] == 'не Азия']
  2. df[not df['R'] == 'Азия']
  3. df[!df['R'] == 'Азия']
  4. df[df['R'] != 'Азия']

A1.2 len по условию

Алгоритмы обработки

Что вернёт выражение len(df[df['GDP ($ per capita)'] > 10000])?

  1. суммарный ВВП всех стран
  2. количество стран, у которых ВВП больше 10000
  3. максимальный ВВП
  4. список названий стран

Функции Pandas - 10

Алгоритмы обработки

Что делает приведенный ниже код?
df.clmn.value_counts()

  1.  Возвращает количество значений в столбце
  2.  Возвращает частоту встречаемости каждого уникального значения
  3.  Возвращает количество строк
  4.  Ничего из вышеперечисленного

1042

Алгоритмы обработки

Фрагмент р : = 1; for i :=1 to n do р : =p*abs(x[i]); определяет...

Ответ: 1) произведение модулей всех чисел ряда X[i] 2)корень квадратный из произведения модулей чисел X 3) 4)среднее геометрическое модулей чисел ряда X

227

Алгоритмы обработки

Как задать элементу массива случайное целое число в диапазоне от -10 до 10, если в программе определена функция int random(int N) { return rand() % N; }?

Варианты
1) x[i]=random(20)-10;                                
2) x[i]=random(21)-10;
3) x[i]=random(10)-10;                                      
4) x[i]=random(-10..10);

147

Алгоритмы обработки

#include <stdio.h>
#include <stdlib.h>
int random(int N) { return rand() % N; }
main()
{
const int N = 10;
int A[N], i;
printf("Исходный массив:\n");
for (i=0; i<N; i++) {
 A[i] = random(110) - 50;
 printf("%4d", A[i]);
 }
 
Значения элементов массива A будут находиться в диапазоне...
 
Варианты:
1) от -50  до 60
2) от -50 до 59
3) от 60 до 109
4) от 60 до 110
 

Счёт строк по условию

Алгоритмы обработки

В первой строке — число N, дальше N строк по шесть чисел через пробел.

Выведите, сколько строк удовлетворяют обоим условиям:

  • в строке одно число повторяется трижды, а остальные три различны;
  • квадрат суммы повторяющихся чисел больше квадрата суммы неповторяющихся.

Это условие взято из демоверсии ЕГЭ 2025 года. Для решения задачи напишите программу, считав входные данные с калвиатуры (а не с файла как в основном задании). Цель задания - проверить правильность написания программы.

Журнал домашних заданий

Словари Использование сортировки Алгоритмы обработки

Учитель ведёт журнал сдачи домашних заданий. На вход подаётся число \(N\) — количество записей. Затем \(N\) строк в формате:

имя предмет балл

Один ученик может сдавать задания по разным предметам.

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

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

Первая строка — целое число \(N\) (\(1 \le N \le 30\)).

Следующие \(N\) строк — имя, предмет и балл через пробел.

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

Для каждого ученика строка в формате: Имя — X заданий, Y баллов

Рейтинг покупателей

Алгоритмы обработки

Интернет-магазин ведёт лог заказов. На вход подаётся число \(N\) — количество записей. Затем \(N\) строк в формате:

имя товар цена

Один покупатель может делать несколько заказов.

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

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

Первая строка — целое число \(N\) (\(1 \le N \le 30\)).

Следующие \(N\) строк — имя, товар и цена через пробел.

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

Для каждого покупателя строка в формате: Имя — X заказов, Y руб

Бомбардиры чемпионата

Алгоритмы обработки

Ведётся протокол голов в чемпионате по футболу. На вход подаётся число \(N\) — количество записей. Затем \(N\) строк в формате:

имя матч голы

Один игрок может забивать в нескольких матчах.

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

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

Первая строка — целое число \(N\) (\(1 \le N \le 30\)).

Следующие \(N\) строк — имя, номер матча и голы через пробел.

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

Для каждого игрока строка в формате: Имя — X голов, Y матчей

Сколько раз встречается число

Алгоритмы обработки

Пользователь вводит количество чисел, затем сами числа — каждое на отдельной строке, и наконец — число, которое нужно найти. Сохраните числа в список.

Выведите две строки:

  1. Исходный список — числа через пробел.
  2. Сколько раз искомое число встречается в списке.

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

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу.

Последняя строка — искомое число \(X\).

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

Первая строка — исходный список через пробел.

Вторая строка — количество вхождений числа \(X\) в список.

Примечание

Подсказка: используйте метод .count().

Больше среднего

Одномерные массивы Алгоритмы обработки Вычисление по заданной формуле

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Вычислите среднее арифметическое. Выведите три строки:

  1. Исходный список — числа через пробел.
  2. Среднее арифметическое, округлённое до 1 знака после запятой.
  3. Числа, которые строго больше среднего, через пробел (в порядке ввода). Если таких нет — пустая строка.

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

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

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

Первая строка — исходный список через пробел.

Вторая строка — среднее с одним знаком после запятой.

Третья строка — числа больше среднего через пробел.

Сумма чётных и нечётных

Алгоритмы обработки

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Выведите три строки:

  1. Исходный список — числа через пробел.
  2. Сумму чётных чисел.
  3. Сумму нечётных чисел.

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

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

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

Первая строка — исходный список через пробел.

Вторая строка — сумма чётных чисел (если чётных нет — выведите 0).

Третья строка — сумма нечётных чисел (если нечётных нет — выведите 0).

Чётные и нечётные

Алгоритмы обработки

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Выведите три строки:

  1. Исходный список — числа через пробел.
  2. Чётные числа через пробел (в порядке ввода). Если чётных нет — пустая строка.
  3. Нечётные числа через пробел (в порядке ввода). Если нечётных нет — пустая строка.

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

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

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

Первая строка — исходный список через пробел.

Вторая строка — чётные числа через пробел.

Третья строка — нечётные числа через пробел.

Количество положительных

Алгоритмы обработки

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Выведите две строки:

  1. Исходный список — числа через пробел.
  2. Количество положительных чисел (строго больше нуля).

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

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

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

Первая строка — исходный список через пробел.

Вторая строка — количество положительных чисел.

Числа по возрастанию

Одномерные массивы Использование сортировки Алгоритмы обработки

Пользователь вводит количество чисел, а затем сами числа — каждое на отдельной строке. Сохраните все числа в список.

Выведите две строки:

  1. Исходный список — числа через пробел в порядке ввода.
  2. Отсортированный список — числа через пробел по возрастанию.

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

Первая строка — целое число \(N\) (\(1 \le N \le 20\)).

Следующие \(N\) строк — по одному целому числу (от \(-1000\) до \(1000\)).

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

Две строки: исходный список и отсортированный по возрастанию, числа через пробел.

Фильтрация коротких слов

Строки Одномерные массивы Алгоритмы обработки

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

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

Одна строка — слова через пробел (от 1 до 20 слов).

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

Одна строка — слова с длиной больше 3 через пробел. Если таких слов нет, выведите пустую строку.

Сортировка словаря по ключам

Использование сортировки Словари Алгоритмы обработки

Пользователь вводит количество учеников, а затем для каждого — имя и оценку. Сохраните данные в словарь. Выведите пары в формате Имя — оценка, отсортированные по имени в алфавитном порядке.

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

Первая строка — целое число \(N\) (\(1 \le N \le 10\)).

Следующие \(N\) строк — имя и оценка через пробел. Имена уникальны, состоят из русских букв, начинаются с заглавной.

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

\(N\) строк в формате Имя — оценка, отсортированные по имени (алфавитный порядок).

Анализ последовательности ДНК

Алгоритмы обработки

Дана строка ДНК, состоящая из символов A, T, G, C. Длина строки кратна 3. Выполните следующие вычисления:

  1. Длина последовательности.

  2. AT-состав — процентная доля нуклеотидов A и T\(\mathrm{AT\%} = \frac{|A|+|T|}{n}\times 100.\)  Округлить до 2 знаков после запятой.

  3. Транскрипция в РНК. Замените каждый нуклеотид T на U; остальные символы не меняются.

  4. Стоп-кодоны — количество кодонов (трёхбуквенных блоков), являющихся стоп-кодонами: TAA, TAG, TGA.

  5. Наименее частый нуклеотид. 

Формат ввода

Одна строка — последовательность ДНК (\(6\le n\le 300\); \(n\) кратно 3).

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

Ровно 5 строк:

length: <целое>
at: <вещественное, 2 знака>
rna: <строка>
stop_codons: <целое>
least_frequent: <символ>

Пример ввода:

ATGTAACCGTGAAAG

Пример вывода:

length: 15
at: 60.00
rna: AUGUAACCGUGAAAG
stop_codons: 2
least_frequent: C

Разбор. Кодоны: ATG | TAA | CCG | TGA | AAG. AT-состав: \((6+3)/15=60{,}00\%\). РНК: T\(\to\)U \(\Rightarrow\) AUGUAACCGUGAAAG. Стоп-кодоны: TAA, TGA — итого 2. Частоты: \(A{=}6,\;G{=}4,\;T{=}3,\;C{=}2\) \(\Rightarrow\) наименее частый — C.

Время: разница между поздним и ранним событием

Алгоритмы обработки

В журнале записано время начала каждого события (часы и минуты). Определите, сколько времени прошло от самого раннего события до самого позднего.

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

В первой строке подаётся количество событий N (N ≥ 2). В каждой из следующих N строк — два целых числа: часы и минуты начала события (0 ≤ часы ≤ 23, 0 ≤ минуты ≤ 59).

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

Два числа через пробел — разница в часах и минутах между самым поздним и самым ранним событием.

Миссия Пиксель. 8. Подсчёт атак

Алгоритмы обработки

📊
Шаг 8: Подсчёт атак
Средне
Мы перехватили журнал атак вируса — последовательность типов атак. Нужно подсчитать частоту каждого типа и составить отчёт в алфавитном порядке.
Условие задачи
 

Дана строка слов через пробел — типы атак. Подсчитай, сколько раз встречается каждый тип, и выведи результаты в алфавитном порядке.

Входные данные

Одна строка: слова через пробел (латиница, от 1 до 100 слов).

Выходные данные

На каждой строке: тип и количество через пробел (в алфавитном порядке типов).

Миссия Пиксель. 7. Реестр героев

Словари Алгоритмы обработки

🗂️
Шаг 7: Реестр героев
Средне
Ты добрался до центральной базы данных. Каждый герой имеет позывной и уровень силы. Чтобы собрать команду для атаки на вирус, нужно быстро находить героев и определять сильнейшего.
Условие задачи
 

В первой строке дано N пар «позывной:уровень» через пробел (двоеточие без пробелов). Во второй строке — M позывных через пробел для запроса.

Для каждого запроса выведи уровень героя (через пробел в одну строку). На второй строке — позывной героя с наибольшим уровнем.

Входные данные

Первая строка: пары позывной:уровень через пробел. Вторая строка: запросы через пробел.

Выходные данные

Первая строка: уровни запрошенных героев через пробел. Вторая строка: позывной сильнейшего.

Подсказка: Разбей каждую пару через .split(":"), создай словарь. Для максимума: max(d, key=d.get).

Миссия Пиксель. 6. Рейтинг Героев

Использование сортировки Алгоритмы обработки

🏆
Шаг 6: Рейтинг героев
Средне
Вирус перемешал рейтинги героев. Чтобы восстановить турнирную таблицу, нужно отсортировать баллы и показать лидеров. Применяй навыки сортировки!
Условие задачи
 

Дана строка из N целых чисел — рейтинги героев. Выведи три строки:

  • все числа, отсортированные по возрастанию, через пробел;
  • три наибольших числа через пробел (от меньшего к большему);
  • среднее арифметическое, округлённое вниз (целочисленное деление).
Входные данные

Одна строка: N целых чисел через пробел (3 ≤ N ≤ 100, значения от 0 до 10000).

Выходные данные

Три строки.

Миссия Пиксель. 2. Фильтр аномалий

Алгоритмы обработки

🛡️
Шаг 2: Фильтр аномалий
Просто
Вирус внедрил в систему аномальные значения. Нормальный сигнал — это число в допустимом диапазоне. Всё, что за границами — мусор от вируса. Отфильтруй чистые данные!
Условие задачи
 

В первой строке — два целых числа L и R — допустимый диапазон (включительно). Во второй строке — набор целых чисел через пробел.

Выведи через пробел только те числа, которые попадают в диапазон от L до R, в том же порядке.

Если подходящих чисел нет, выведи слово ПУСТО.

Входные данные

Первая строка: два целых числа L и R (L ≤ R). Вторая строка: набор целых чисел через пробел.

Выходные данные

Отфильтрованные числа через пробел, или слово ПУСТО.

Миссия Пиксель. 1. Перехваченные данные

Алгоритмы обработки

📡
Шаг 1: Перехваченные данные
Просто
Кибер-агент, ты на связи! Вирус «Пиксель» атаковал серверы игровой вселенной «НеоСфера». Мы перехватили фрагмент данных — список числовых кодов. Проведи базовый анализ, чтобы понять масштаб утечки.
Условие задачи
 

Дана строка из N целых чисел через пробел. Выведи пять чисел, каждое на отдельной строке:

  • количество чисел в списке;
  • сумму всех чисел;
  • минимальное число;
  • максимальное число;
  • первое число минус последнее число.
Входные данные

Одна строка: N целых чисел через пробел (1 ≤ N ≤ 100, числа от −1000 до 1000).

Выходные данные

Пять чисел, каждое на отдельной строке.

Подсказка: Считай список: a = list(map(int, input().split())). Дальше — len(), sum(), min(), max(), a[0] - a[-1].

Why Did the Cow Cross the Road

Алгоритмы обработки

Как часть исследования вопроса "почему коровы переходят дороги", Фермер Джон получить задание составить документ о том, сколько раз каждая из его коров переходила дорогу. Он тщательно залоггировал данные о местоположении каждой из его коров, и выполнил серию из \(N\) наблюдений в течение дня. Каждое наблюдение содержало ID коровы (целое число в интервале \(1 \ldots 10\), поскольку у ФД было всего 10 коров), а также на какой стороне дороги находится корова.

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

ФОРМАТ ВВОДА (файл crossroad.in):

Первая строка ввода содержит количество наблюдений, \(N\), положительное целое число не более 100. Каждая из последующих \(N\) строк содержит одно наблюдение, которое содержит ID коровы за которым стоит число 0 или 1 (0 на одной стороне дороги, 1 на другой стороне дороги).

ФОРМАТ ВЫВОДА (файл crossroad.out):

Вычислите общее количество подтверждённых пересечений.

Don't Be Last!

Алгоритмы обработки

У Фермера Джона есть 7 молочных коров: Bessie, Elsie, Daisy, Gertie, Annabelle, Maggie, Henrietta. Он доит их каждый день и хранит детальный протокол количества молока, которая дала каждая корова во время каждой дойки. Не удивительно, что ФД поощряет коров, которые дают больше молока.

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

ФОРМАТ ВВОДА (файл notlast.in):

Ввод начинается со строки, содержащей целое число \(N\) (\(1 \leq N \leq 100\)), определяющее количество записей в протоколе дойки.

Каждая из \(N\) последующих строк содержит имя коровы (одно из 7 указанных выше), за которым следует положиельное число (не более 100), указывающее количество молока, которое произвела корова во время очережной дойки.

Любая корова, которая не появилась протоколе - не произвела молока вообще.

ФОРМАТ ВЫВОДА (файл notlast.out):

В единственной строке вывода выведите имя коровы, которая произвела второе по минимальности количество молока. Более точно, если \(M\) минимальное количество молока из всех произведённых коровами, выведите имя коровы, которая произвела минимальное колчиество млока, большее чем \(M\). Если несколько коров произвели такое количество молока или нет аких коров (т.е. все произвели по \(M\) молока), выведите слово "Tie". Не забудьте добавить символ перевода строки в своему выводу. Заметим, что \(M=0\) если одна из коров полностью отсутствует в протоколе дойки.

The Cow-Signal

Алгоритмы обработки Одномерные массивы

Беси и её подружки играют в супергероев. Все знают, что каждый супергерой имеет сигнал, призывающий его к действию. Беси нарисовала специальный сигнал на листке бумаги размером \(M \times N\) (\(1 \leq M \leq 10, 1 \leq N \leq 10\)), но он получился очень маленький. Беси хочет его увеличить ровно в K (\(1 \leq K \leq 10\)) раз в каждом направлении.

Этот сигнал состоит только из символов '.' и 'X'.

ФОРМАТ ВВОДА (файл cowsignal.in):

Первая строка ввода содержит \(M\), \(N\), \(K\), разделённые одиночными пробелами.

Каждая из следующих \(M\) строк содержит строку символов длиной \(N\). Все вместе они и описывают сигнал.

ФОРРМАТ ВВОДА (файл cowsignal.out):

Вы должны вывести \(KM\) строк, каждая с \(KN\) символами, представляющими картинку увеличенного сигнала.

Block Game

Алгоритмы обработки

Фермер Джон пытается научить своих коров читать, дав им множество из N дощечек, обычно используемых дошкольниками (\(1 \leq N \leq 100\)). Каждая дощечка имеет слово и рисунок на каждой стороне. Например, одна сторона может иметь слово 'cat' и картинку кота на одной стороне и слово 'dog' и картинку собаки на другой стороне.

Когда дощечки лежат на земле, видно \(N\) слов. Переворачивая таблички можно получать различные множества из \(N\) слов. Чтобы помочь коровам запомнить буквы, ФД хочет подготовить некоторое количество деревянных блоков, на каждом из которых выписана одна буква алфавита. Он хочет подготовить достаточное количество блоков с каждой буквой, для того чтобы вне зависимости от того, какое множество из \(N\) слов показывается, коровы могли составить все слова используя эти блоки. Например, если \(N=3\) и на табличках представлены слова 'box', 'cat', 'car', коровам нужно как минимум 1 'b', 1 'o', 1 'x', 2 'c', 2 'a', 1 't', 1 'r'.

Помогите ФД определить минимальное количество блоков для каждой буквы алфавита, которые он должен обеспечить, чтобы вне зависимости от того какой стороной вверх направлены таблички, можно было составить все \(N\) видимых слов.

ФОРМАТ ВВОДА (файл blocks.in):

Строка 1 содержит целое число \(N\).

Каждая из следующих \(N\) строк содержит 2 слова, разделённых одиночным пробелом, задавая два слова на противоположных сторонах дощечки. Каждое слово – строка не более чем из 10 маленьких английских букв.

ФОРМАТ ВЫВОДА (файл blocks.out):

Выведите 26 строк. Первая выходная строка должна содержать требуемое количество букв ‘a’. Следующая строка должна содержать требуемое количество букв ‘b’. И т.д.

Herdle

Алгоритмы обработки

Коровы создали новый вид пазлов, который назвали Herdle.

Каждый день они выпускают новый пазл. Пазл представляет собой решётку 3*3, гже каждая клетка занята коровой определённой породы. Всего имеется 26 различных видов пород, которые представляются большими латинским буквами от A до Z. Играющий должен узнать тип породы в каждой клетке через серию запросов. В каждом запросе от представляет 3*3 латинских букв. Ответ формируется следующим образом: если буквы угаданы, они подсвечиваются зелёным, Буквы верной породы, но не на своём месте подсвечиваются жёлтым.

Количество подсвеченных указывает, сколько их должно быть. Например, предположим, что гипотеза содержит 4 символа A, а правильный ответ содержит только 2 символа A, причём ни одна позиция не угадана. Тогда в ответе на этот запрос только 2 символа A будут подсвечены жёлтым. В общем случае, если \(x\) коров определённой породы в запросе и только \(y\) - в правильном ответе (не считая коров, которые уже стоят на своём месте и будут подсвечены зелёным), только \(y\) из этих \(x\) коров будут подсвечены жёлтым.

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

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первые 3 строки ввода содержат решётку, представляющую правильный ответ. Слеующие 3 строки представляют запрос.

ФОРМАТ ВЫВОДА(на экран / stdout):

Выведите две строки. В первой - количество квадратов, которые будут подсвечены зелёным цветом, во второй - количество квадратов, которые будут подсвечены жёлтым цветом

Empty Stalls

Алгоритмы обработки


Новый амбар Фермера Джона представляет собой большой круг из N стойл (2 <= N <=3,000,000), пронумерованных от 0 до N-1, стойло N-1 соседствует со стойлом 0.
В конце каждого дня коровы ФД возвращаются в амбар, одна за одной, У каждой имеется предпочтительный номер стойла, который она хочет занять. Однако если это место уже занято другой коровой, она идёт вперёд последовательно от этого стойла, пока не найдёт первое не занятое стойло, которое она и займёт. Если она пройдёт стойло N-1, она продолжит поиск со стойла 0.
По заданному предпочтительному номеру для каждой коровы определите минимальный номер стойла, который останется незанятым после того как все коровы вернутся в амбар. Заметим, что ответ на этот вопрос не зависит от того, в каком порядке возвращаются коровы
Для того, чтобы избежать проблем с огромным вводом, данные вводятся в специальном формате, использующем K строк (1 <= K <=10,000) вида
X Y A B
Здесь описываются предпочтительные стойла X Y коров: X коров предпочитают каждое из стойл f(1) .. f(Y), где f(i)= (Ai + B) mod N. Значения A и B лежат в диапазоне 0...1,000,000,000.
Не забудьте про стандартное для всех задач ограничение на память – 64 Мбт.
PROBLEM NAME: empty
Формат входных данных
* Строка 1: Два разделённых пробелом целых числа: N и K.
* Строки 2..1+K: каждая строка содержит целые числа X Y A B, смысл которых описан выше. Общее количество коров описываемых этими числами не превысит N-1. Коровы могут добавляться в одно и тоже стойло разными из этих строк.
Формат выходных данных
* Строка 1: Минимальный индекс не занятого стойла.
Примечание
Все стойла будут заняты кроме стойла с номером 5.

Cows in a Row

Алгоритмы обработки


У Фермера Джона N коров (1 <= N <= 1000) выстроены в ряд. У каждой коровы имеется ID породы. У коровы с номером i, ID породы B(i).
ФД думает, что его ряд коров выглядел бы более впечатляюще, если бы он имел как можно более длинный непрерывный блок коров с одинаковым ID коровы. Для того, чтобы создать такой блок, ФД решил удалить из своего ряда всех коров, имеющих конкретный ID породы, который он выберет.
Помогите ФД определить длину наибольшего непрерывного блока коров с одинаковым ID, который он может получить, удалив всех коров с некоторым ID, который выберет ФД.

PROBLEM NAME: cowrow
Формат входных данных
* Строка 1: Целое число N.
* Строки 2..1+N: Строка i+1 содержит B(i), целое число в диапазоне 0...1,000,000.
Формат выходных данных
* Строка 1: Наибольший размер непрерывного блока коров, с одинаковым ID коровы, который он может создать.


Примечание
При удалении всех коров с ID=3, ФД может получить ряд 2, 7, 7, 7, 7, 5, 7. В этому ряду максимальный непрерывный блок состоит из 4 коров с ID 7.

Haybale Stacking

Префиксные суммы(минимумы, ...) Использование сортировки Алгоритмы обработки


Беси согласилась помочь ФД уложить пакеты с сеном. Она начинает с N (1 <= N <= 1,000,000, N нечетное) пустых стеков, пронумерованных от 1 до N. Затем ФД дает ей последовательность из K инструкций (1 <= K <= 25,000), каждая вида A B, означающая, что Беси должна добавить по одному пакету с сеном в каждый из стеков в диапазоне от A до B. Например, инструкция 10 13 означает, что Беси должна положить по пакету сеном в стеки 10, 11, 12, 13.
После того как вся работа закончена, ФД хочет узнать медианную высоту всех N своих стеков - то есть высоту среднего стека, если все стеки упорядочить по высоте. По условию N нечетно, поэтому этот стек уникален. Пожалуйста, помогите Беси ответить на этот вопрос.
PROBLEM NAME: stacking
Формат входных данных
* Строка 1: Два разделенных пробелом целых числа, N K.
* Строки 2..1+K: Каждая строка содержит одну инструкцию ФД в виде двух целых (разделенных пробелом) чисел A B (1 <= A <= B <= N).

Формат выходных данных
* Строка 1: Медианная высота после того как Беси выполнит все инструкции


Примечание
После того, как Беси закончит, стеки будут иметь высоты 0,1,2,3,3,1,0. Если их упорядочить, получим: 0,0,1,1,2,3,3. Средний элемент равен 1.

Hay Bales

Алгоритмы обработки


Коровы вернулись! Фермер Джон аккуратно выстроил N (1 <= N <= 10,000) столбиков одинаковой высоты из пакетов сена. Однако пока он отошел ненадолго, коровы поперетаскивали некоторые пакеты между столбиками, так что теперь они необязательно имеют одинаковую высоту. По заданным новым высотам столбиков определите минимальное количество пакетов сена, которые нужно перенести, чтобы вернуть столбики к их исходным, одинаковым высотам.
PROBLEM NAME: haybales
Формат входных данных
* Строка 1: Количество столбиков, N (1 <= N <= 10,000). * Строки 2..1+N: Каждая строка содержит количество пакетов сена в одном столбике (целое число, от 1 до 10 000)
Формат выходных данных
* Строка 1: Одно целое число - минимальное количество пакетов сена, которое необходимо перенести, чтобы столбики стали одинаковой высоты.
Примечание
Переместив 7 пакетов сена, мы можем выровнять к 5 все высоты. 3 из столбика 2 в столбик 1, 2 из столбика 2 в столбик 4, 2 из столбика 3 в столбик 4.

Победитель выборов

Алгоритмы обработки

На выборах мэра баллотируются три кандидата (номера 1, 2, 3). Побеждает кандидат, набравший строго больше голосов, чем каждый из остальных. Если два или три кандидата набрали одинаковое максимальное число голосов, выведите REPEAT (необходим второй тур).
 

Входные данные

Первая строка — целое число N (1 <= N <= 10000) - количество проголосовавших.
Каждая из следующих N строк содержит одно число (1, 2 или 3) - результат голосания каждого избирателя.
 

Выходные данные

Номер победителя или REPEAT.

Подсчёт голосов

Алгоритмы обработки

В школе проходят выборы президента ученического совета. Баллотируются три кандидата (номера 1, 2, 3). Каждый ученик голосует за одного из них.
Определите, сколько голосов набрал каждый кандидат.
 

Входные данные

Первая строка — целое число N (1 <= N <= 1000) — количество проголосовавших.
Каждая из следующих N строк содержит одно целое число (1, 2 или 3) — голос ученика.
 

Выходные данные

Три числа через пробел — количество голосов за кандидата 1, 2 и 3 соответственно.

СРЕДНЕЕ АРИФМЕТИЧЕСКОЕ ЭЛЕМЕНТОВ МАТРИЦЫ

Двумерные массивы Алгоритмы обработки

Программа получает на вход размеры матрицы n и m (количество строк и столбцов), затем элементы матрицы (n строк по m чисел в каждой). Все числа целые, не превышают по модулю 1000. Программа должна вывести среднее арифметическое всех элементов матрицы с точностью до 2 знаков после запятой.

ПИКСЕЛЬНАЯ МОЗАИКА В СТИЛЕ 8-БИТ

Двумерные массивы Алгоритмы обработки Задача на реализацию

Создадим эффект старой 8-битной графики! Разделим фото на блоки k×k и каждый блок заменим на один пиксель со средней яркостью. Программа получает на вход размеры фото n и m (оба делятся на k нацело), затем n строк по m чисел - пиксели, затем размер блока k. Программа должна вывести "пикселизированное" изображение: (n/k) строк по (m/k) чисел. Каждое число - это среднее арифметическое блока k×k из исходного изображения, округлённое вниз.

РАЗМЫВАЕМ ФОТО ДЛЯ ЭФФЕКТА

Двумерные массивы Алгоритмы обработки

Нужно слегка размыть изображение для художественного эффекта. Используем простое размытие: каждый пиксель заменяется на среднее значение его самого и соседей (сверху, снизу, слева, справа). Программа получает на вход размеры изображения n и m, затем n строк по m чисел - яркость пикселей. Программа должна вывести размытое изображение: n строк по m чисел. Для каждого пикселя считаем среднее арифметическое его самого и существующих соседей (для угловых и крайних пикселей соседей меньше). Ответ округлять до целого вниз.

ИДЕАЛЬНОЕ МЕСТО ДЛЯ ВСТРЕЧИ

Алгоритмы обработки

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

Идеальное место — это аттракцион, который:

  • является самым низким в своём ряду;

  • и одновременно самым высоким в своём столбце.


Программа получает на вход размеры карты n и m, затем n строк по m чисел - высоты точек (все числа целые не больше 100).

Программа должна вывести координаты идеального места (номер строки и номер столбца, нумерация с 1).
Если идеальных мест нет, вывести "NONE". Если их несколько, вывести первую найденную (при обходе слева направо, сверху вниз). 

ЗЕРКАЛЬНОЕ СЕЛФИ

Двумерные массивы Алгоритмы обработки

Вы сделали селфи, но камера всё перевернула зеркально! Нужно отразить картинку по горизонтали (слева направо). Программа получает на вход размеры картинки n и m (высота и ширина), затем n строк по m чисел - пиксели картинки. Программа должна вывести отражённую по горизонтали картинку: n строк по m чисел. Первый столбец становится последним, второй - предпоследним и т.д.

Следы на снегу

Алгоритмы обработки

Утром Дядя Фёдор вышел на улицу и увидел цепочку следов на снегу. Он записал глубину каждого следа в сантиметрах. Дядя Фёдор хочет найти самый глубокий след, чтобы понять, кто из жителей деревни проходил мимо (чем тяжелее, тем глубже след).

Входные данные: В первой строке число N (1 ≤ N ≤ 1000) — количество следов. Во второй строке N целых чисел от 1 до 100 — глубина каждого следа.

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

A. Nash equilibrium

Алгоритмы обработки Двумерные массивы

This is an unusual problem in an unusual contest, here is the announcement: http://cf.m27.workers.dev/blog/entry/73543

You are given a table \(A\) of integers \(n \times m\). The cell \((x, y)\) is called Nash equilibrium if both of the following conditions hold:

  • for each \(x_1 \neq x\) \(A_{xy} > A_{x_1y}\);
  • for each \(y_1 \neq y\) \(A_{xy} < A_{xy_1}\).

Find a Nash equilibrium in \(A\). If there exist several equilibria, print the one with minimum \(x\). If still there are several possible answers, print the one with minimum \(y\).

Input

The first line contains two integers \(n, m\) (\(2 \leq n, m \leq 1000\)), denoting the size of the table.

Each of next \(n\) lines contain \(m\) space-separated integers \(A_{ij}\) (\(1 \leq A_{ij} \leq 10^9\)).

Output

Output \(x\) and \(y\) — the coordinates of the lexicographically minimum Nash equilibrium in the table. In case there is no answer, print two zeroes instead.

Одинаковая четность

Алгоритмы обработки Цикл for

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

Входные данные: в первой строке вводится число N, в следующих строках вводятся N чисел (по одному числу в строке).

Выходные данные: выведите сумму чисел, для которых чётность значения совпадает с чётностью позиции (нумерация с 0).

Максимум линейной функции

Алгоритмы обработки Цикл for

Дано количество целых чисел n. Далее в n строках вводятся целые числа (обозначим их как x).

Для каждого введённого числа x необходимо вычислить значение функции \( f(x)=2x−5\).

Найти значение x (аргумент), при котором функция \( f(x)\) принимает максимальное значение.

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

  • Первая строка: целое число n (количество чисел в последовательности), где \(1 \le n \le 100\).

  • Следующие n строк: целые числа (значения x). Каждое число по модулю не превышает 105


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

Два числа через пробел:

  • первое число: значение x, при котором функция \( f(x)=2x−5\) достигает своего максимума
  • второе число: максимальное значение функции \( f(x)=2x−5\).

 

Разница между максимальным и минимальным

Алгоритмы обработки Одномерные массивы

Дано количество целых чисел n. Далее в n строках вводятся целые числа. Найти разницу между максимальным и минимальным элементами последовательности.

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

  • Первая строка: количество чисел n - целое положительное число. Количество чисел не больше 100.

  • Следующие n строк: целые числа. Каждое число по модулю не превышает 107.

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

  • Одно число - разница между максимумом и минимумом.

Подсчёт V-Bucks

Алгоритмы обработки

В игре Fortnite игрок выполняет задания и получает V-Bucks. Но премиальные награды (больше 100 V-Bucks) идут в особый фонд для покупки редких скинов.​

Напишите программу, которая подсчитывает общую сумму полученных премиальных наград — те, где награда V-Bucks больше 100.​

Входные данные:
Первая строка: N — количество выполненных заданий (N ≤ 20)

Следующие N строк: количество V-Bucks за каждое задание (число от 0 до 500)

Выходные данные:
Сумма премиальных наград (сумма только тех чисел, которые строго больше 100)

Считаем дорогие покупки

Цикл for Условный оператор Алгоритмы обработки

Макс покупает скины в Roblox и записывает цену каждой покупки в робуксах. Ему нужно узнать, сколько раз он потратил больше 100 робуксов за одну покупку (дорогие покупки).​
Напишите программу, которая запрашивает у пользователя информацию (см. входные данные) и выводит ответ

Входные данные:

  • Первая строка: N — количество покупок (N <= 20)

  • Следующие N строк: по одному числу от 10 до 500 — цена покупки в робуксах

Выходные данные: количество покупок дороже 100 робуксов

Подсчёт побед

Цикл for Алгоритмы обработки

Артём играет в Standoff 2 и записывает результаты матчей: 1 — победа, 0 — поражение.

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

Входные данные:

  • Первая строка: N — количество матчей (N <= 20)

  • Следующие N строк: по одному числу (0 или 1) — результат каждого матча

Выходные данные: количество побед

Бит чётности

Строки Алгоритмы обработки

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

Примеры
Входные данные Выходные данные
1 00110010 001100101

Удаление дубликатов

Задача на реализацию Алгоритмы обработки

Дубликаты - одинаковые строки в данных, которые могут исказить анализ.

Основные методы

df.duplicated() - находит дубликаты (возвращает True/False)
df.drop_duplicates() - удаляет дубликаты
df.nunique() - количество уникальных значений
Параметры drop_duplicates()
subset - столбцы для проверки дубликатов
keep - какую копию оставить ('first', 'last', False)
ignore_index -  пересоздает аккуратный последовательный индекс (0, 1, 2, 3, 4...).
Пример
df_clean = df.drop_duplicates()  # Удалить полные дубликаты
df_partial = df.drop_duplicates(subset=['name'])  # По имени
df_last = df.drop_duplicates(keep='last')  # Оставить последний

Задание

1) Посчитайте количество полных дубликатов в прикрепленном датасете (программа должна вывести целое число)
2) Удалите все полные дубликаты и выведите размер получившегося датасета.

Поиск пропусков

Задача на реализацию Алгоритмы обработки

Пропущенные значения (NaN, None, NULL) - одна из главных проблем при анализе данных.

Поиск пропусков

df.isnull() - находит пропуски
df.isnull().sum() - считает пропуски по столбцам

 

Задание

Проанализируйте датасет супергероев, считав его из прикрепленного файла
Напишите программу, который ищет пропуски. Выведите

  1. В первой строке - количество пропусков в каждом столбце (семь целых чисел через пробел)
  2. Во второй строке - процент пропущенных значений (отбросив дробную часть) для каждого столбца  (семь целых чисел через пробел)
Числа должны быть в порядке перечисления столбцов в датасете.

Пример вывода (пример дан для понимания формата вывода):
1 2 3 2 1 1 4
10 20 30 20 10 10 40

Фатальный промах

NumPy Алгоритмы обработки

Промахом считается выстрел с расстоянием больше 10.0. Определите, у какого игрока был самый худший одиночный выстрел (максимальное значение в массиве)? А сколько всего фатальных промахов совершила вся команда?

Меткий глаз

NumPy Алгоритмы обработки

Попадание в цель считается идеальным, если расстояние до центра меньше 0.5. Посчитайте количество идеальных попаданий для каждого игрока.

Холодная рука или горячая?

NumPy Алгоритмы обработки

Тренеры заметили, что некоторые игроки сильно «разогреваются» к концу сессии. Проверьте гипотезу: сравните среднюю точность каждого игрока по первым пяти выстрелам и по последним пяти. У кого разница в пользу последних выстрелов наибольшая? (Значит, он "разыгрывается").

Снайперская серия

NumPy Алгоритмы обработки

Точность — это хорошо, но стабильность — лучше! Найдите игрока с самой маленькой дисперсией или стандартным отклонением результатов. Это значит, что он стабильно стреляет примерно с одинаковой точностью.

Счётчик парадоксов

Алгоритмы обработки Задача на реализацию Цикл for

⏰ Починка машины времени:
[██████████████░░░░░░] 71% - Модуль 5 из 7 восстановлен
✅ Генератор порталов: КАЛИБРУЕТСЯ
⚡ Энергия растет!

Профессор Хронос обнаружил странные сигналы!
Кто-то уже путешествовал во времени и оставил временные маячки — метки в разных эпохах.

Каждый маячок имеет координату относительно 2025 года:
  • Отрицательное число = маячок в прошлом (например, -50 означает 1975 год)
  • Положительное число = маячок в будущем (например, +30 означает 2055 год)
  • Ноль = сигнал остановки сканирования
Машина времени должна уметь сканировать временную линию и обнаруживать маячки. Необходимо написать программу для анализа найденных маячков и загрузить ее в машину времени.

Что должна делать программа:
  1. Считывать координаты маячков (числа), пока не получит сигнал стоп (число ноль)
  2. Подсчитать:
    • Сколько маячков в прошлом (отрицательные координаты)
    • Сколько маячков в будущем (положительные координаты)
    • Самый древний маячок (наименьшая координата)
  3. Вывести отчет о сканировании (смотри пример)

 

💡 Подсказка:
- Текущий год = 2025 (точка отсчета)
- Если координата = -20, это 2025 - 20 = 2005 год
- Если координата = +15, это 2025 + 15 = 2040 год
- Чем меньше число, тем дальше в прошлое!

66451

Задачи на моделирование Алгоритмы обработки

Глеб очень любит компьютерные игры, потому решил впервые разработать свою игру. Он начал с чего-то максимально простого – матричного пинг-понга. Первым этапом Глеб решил сделать алгоритм, который будет считать количество набранных очков мячиком, который будет запускаться в матрице, состоящей из целых чисел.
Для того, чтобы протестировать алгоритм, Глеб указывает стартовую позицию мячика и его стартовое направление (число от 1 до 8). Мячик после прохождения через ячейку матрицы оставляет на её месте дыру, при попадании в будущем в которую игра заканчивается.
Стоит также учесть, что так как это пинг-понг, то мячик отталкивается от стенок, но в данной игре отражение действует по принципу угол отражения равен углу преломления + 45 градусов по часовой стрелке (при попадании в угол мячик отталкивается в обратном направлении + 45 градусов). Если мячик попадает в угол под углом 45 градусов, то он отражается обратно вектору попадания.
Стартовое направление мячика задаётся числом от 1 до 8. Направления представлены в виде матрицы ниже, где x – это текущая позиция мячика.

1 2 3
4 x 5
6 7 8

Входные данные
В первой строке подаются два числа N, M (1 <= N, M <= 100) – размер матрицы, далее на N строках по M целых чисел (от -10000 до 10000) вводится сама матрица. После вводится на одной строке стартовая позиция мячика (нумерация в матрице с 1), а на последней строке вводится стартовое направление мячика (число от 1 до 8).
Выходные данные
Вывести в ответе единственное число – количество набранных очков мячиком после старта.

Примечание
Пример №2: При старте из ячейки -5 по направлению 8 (в правый нижний угол), мячик ударится в угол, значит он должен отразиться в обратном направлении, но так как к углу отражения по правилам игры прибавляется 45 градусов по часовой стрелке, то мячик полетит по направлению не 1 (в левый верхний угол), а по направлению 2 (вверх). Далее отразится в обратном направлении от верхней стенки и попадёт в ячейку -5, на месте которой уже осталась дыра, потому игра окончится.
 

65983

Алгоритмы обработки Задачи на моделирование

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

Формат ввода
На вход программе в первой строке подается натуральное число N, не превышающее 10000 – количество замеров температуры.
Во второй строке подается натуральное число X, не превышающее 1000 – пороговое значение температуры.
Далее в N строках подается по одному натуральному числу ti, не превышающему 1000 – температура смеси при измерении номер i.
Формат вывода
Вывести одно целое число – сколько минут длился самый длительный нагрев смеси.

65961

Алгоритмы обработки Словари реализация

Агрохолдинг «Дикое Поле» анализирует результаты сбора урожая. Известно, сколько тонн зерна убрали на каждом из N полей, находящихся в распоряжении холдинга. Так как несколько огромных полей сильно влияют на среднее, в агрохолдинге решили ввести другую метрику. Опорными называются поля, урожай с которых превышает пороговое значение, но меньше среднего. Определите наиболее часто встречающийся урожай с опорного поля.
Формат ввода
На вход программе в первой строке подаётся натуральное число N (N ≤ 1000) – количество полей. Во второй строке подаётся натуральное число M (M≤ 100 т) – пороговое значение урожая с поля. Далее в N строках идёт по одному натуральному числу mi – масса урожая с поля номер i (1≤ mi ≤1000 т).
Формат вывода
Вывести одно целое число – наиболее часто встречающийся урожай с опорного поля. Если таких значений несколько, выведите наибольшее. Если таких значений нет, выведите 0.

65872

Линейные алгоритмы Алгоритмы обработки

Автомат получает на вход последовательность целых чисел и складывает их по следующим правилам:
1) Если число чётное, автомат удваивает его и добавляет в сумму.
2) Если число нечётное, автомат добавляет его значение в сумму.
После обработки последовательности автомат вычитает из получившейся суммы максимальное число последовательности, кратное 3, и выводит получившееся значение как результат.
Располагая последовательностью, определите, какой результат выведет автомат.

Входные данные
На вход программе в первой строке подается натуральное число N (5 ≤ N ≤ 10000) – количество чисел. Далее в N строках подаётся по одному натуральному числу, не превышающему 1000. Если чисел, кратных 3, в последовательности нет, автомат ничего не вычитает.
Выходные данные
Вывести одно целое число – наибольшее возможное, которое можно получить по правилам, описанным в условии задачи.

65818

Линейные алгоритмы Алгоритмы обработки

Автомат получает на вход последовательность неотрицательных чисел, меньших 100, и работает с ними по следующим правилам:
1) Если количество единиц нечётно и превышает количество десятков,автомат добавляет количество десятков в первую контрольную сумму.
2) В противном случае автомат добавляет количество единиц во вторую контрольную сумму.
После обработки последовательности автомат вычитает меньшую сумму из большей и выводит результат.
Располагая последовательностью, определите, какой результат выведет автомат. Количество десятков в однозначном числе равно нулю.

Формат входных данных
На вход программе в первой строке подается натуральное число N (3 ≤ N ≤ 10000) – количество чисел. Далее в N строках подаётся по одному неотрицательному числу, меньшем 100.
Формат выходных данных
Вывести одно целое число – результат обработки последовательности, который можно получить по правилам, описанным в условии задачи.

65795

Задача на реализацию Алгоритмы обработки Двумерные массивы

В онлайн-симуляции одной игры был представлен алгоритм уничтожения двух квадратных матриц одинакового размера.
В самом начале симуляции задаются две матрицы, которые стоят вплотную друг к другу.
Далее происходит уничтожение матриц – строки, которые соприкасаются у двух матриц числами, которые равны, уничтожаются (пример на картинке), затем обе матрицы поворачиваются одновременно на 90 градусов по часовой стрелке и повторяется алгоритм уничтожения. Матрицы уничтожаются до тех пор, пока есть чему уничтожаться. Даже если после первого поворота ничего не уничтожилось, то может уничтожиться после нескольких.

В данном случае заданы две квадратные матрицы размер 3*3. Их поставили вплотную друг к другу, соприкасается только одна строка по одинаковым числам (строка 2).

Потому данная строка полностью удаляется в двух матрицах, потому получаем.

Далее каждая матрица вращается по часовой стрелке на 90 градусов.


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

Формат входных данных
На первой строке подаётся целое число N – размер квадратных матриц (1 <= N <= 1000).
Далее на N строках подаётся по N целых чисел в диапазоне от -1000 до 1000 – левая матрица.
Далее на N строках подаётся по N целых чисел в диапазоне от -1000 до 1000 – правая матрица.
Формат выходных данных
Вывести на одной строке через пробел сумму чисел оставшихся ячеек левой матрицы и правой матрицы, соответственно.



 

Кристаллы Максимуса

Алгоритмы обработки Простые числа и разложение на множители Строки

В далеком королевстве жил могучий маг по имени Максимус, который обладал уникальной способностью управлять волшебными кристаллами. Эти кристаллы были не простыми — на каждом из них написано целое число, колеблющееся от –100 000 до 100 000. Однажды, Максимус решил провести эксперимент и выяснить, сколько волшебных троек кристаллов он сможет найти.

Но не просто троек! В каждой тройке должно быть хотя бы одно число, которое таит в себе загадочную цифру 2. Кроме того, сумма чисел, записанных на этих трех кристаллах должна быть простым числом, потому что простые числа это любимые числа Максимуса. (Тройкой кристаллов Максимус считает три кристалла, которые лежат рядом.)

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

Помогите Максимиусу в его приключении! Напишите программу, которая определит количество таких троек и вычислит максимальную сумму среди них. В ответе запишите два числа: сначала количество найденных троек, затем максимальную сумму элементов таких троек.

Формат входных данных
В первой строке вводится число N (1<=N<=10 000)  - количество кристаллов, которые имеются у Максимуса. В следующих N строках, по одному в строке, вводятся N целых чисел - числа, которые записаны на кристаллах (все числа по модулю не более 100 000).


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

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

n^2 + (n+1)^2 + ... + (2n)^2

Цикл for Алгоритмы обработки

С клавиатуры вводится натуральное число n (n<=100). Напишите программу, которая вычисляет сумму
\(n^2 + (n+1)^2 + (n+2)^2 + ... + (2 \cdot n)^2\).
 

Произведение чисел от -b до b

Цикл for Алгоритмы обработки

Напишите программу, которая находит среднее арифметическое всех целых чисел от b до 2*b (значение b вводится с клавиатуры; 1 <= b <= 100). Ваш ответ будет проверен с точностью до 6 знака в дробной части.

Произведение чисел от А до 20

Цикл for Алгоритмы обработки

Напишите программу, которая находит сумму всех целых чисел от a до 20 (значение a вводится с клавиатуры; 1 <= a <= 20).
 

Сумма от 100 до 500

Цикл for Алгоритмы обработки

Напишите программу, которая находит сумму чисел от 100 до 500 с помощью оператора цикла for. 

Формат входных данных
Программа ничего не получает на вход. 

Формат выходных данных
Выведите одно число - ответ на задачу. 

Суперскиллы

Алгоритмы обработки Линейные алгоритмы

В городе Летовецк живут n подростков, каждый из которых обладает некоторым количеством скиллов. Назовем подростка "суперскилованным", если количество его скиллов больше, чем у других подростков.
Старый мудрец Летовец решил поделиться всеми своими суперскиллами только с одним из подростков. Он хочет выбрать подростка таким образом, чтобы скиллы этого подростка и скиллы Летовца суммарно были больше. Другими словами, выбранный мудрецом подросток может стать "суперскилованным". 

Напишите программу, которая определяет сколько подростков являются претендентантами стать  "суперскилованными".


Формат входных данных
В первой строке задается натуральное число n (n < 105) - количество подростков. Во второй строке вводится n чисел skillsi - количество скиллов у i-го подростка (0<=skillsi<=109, 0<=i<n). В третьей строке вводится одно натуральное число extraskills - количество суперскиллов у мудреца Летовца (0<=extraskills<=109).

Формат выходных данных
Выведите одно число - ответ на задачу

Ёлка для Муми-троллей

Алгоритмы обработки

Мумми-Тролли, полные энтузиазма, решили установить самую высокую ёлку в Муми-доле. Однако, когда они начали искать подходящее дерево, выяснилось, что в лесу растут ели разной высоты: одна — a метра, другая — b метров, а третья — c метров.

Помогите Муми-тролям выбрать из трех данных ёлок самую высокую! 

Вам дано три целых числа: a, b, c - длины ёлок (по одному числу в строке). Выведите на экран длину той ёлки, которая нужна Муми-тролям.

Нахождение самой длинной последовательности из одного символа

Строки Алгоритмы обработки

Дана строка, представляющая последовательность символов (например, ДНК или белковая последовательность). Необходимо найти:

  1. Символ, который образует самую длинную непрерывную последовательность.
  2. Длину этой последовательности.

Комплементарная цепь ДНК

Строки Алгоритмы обработки

ДНК представляет собой две взаимодополняющие цепи нуклеотидов. Каждому нуклеотиду одной цепи соответствует комплементарный нуклеотид в другой цепи:

  • A (аденин) связывается с T (тимин).
  • T связывается с A.
  • G (гуанин) связывается с C (цитозин).
  • C связывается с G.

Формат входных данных
Строка содержит последовательность ДНК

Формат выходных данных
Выведите комплементарную цепь ДНК

Определение частоты символов в последовательности ДНК

Строки Алгоритмы обработки

ДНК-последовательности состоят из четырех типов нуклеотидов: A (аденин), T (тимин), G (гуанин) и C (цитозин). В этой задаче необходимо подсчитать количество каждого из этих нуклеотидов в заданной строке (последовательности ДНК).

Формат выходных данных
В строке содержится последовательность ДНК.

Формат выходных данных
Выведите количество каждого нуклеотида

Ты близок к разгадке...

Задача на реализацию Алгоритмы обработки

После того как Алиса обнаружила самое частое слово в предыдущем файле, она вдруг заметила, что её компьютер начал мигать. На экране появилось сообщение:

"Система обновлена! Новый файл доступен: ЧИСЛО.txt."
P.S. Число в названии файла равно числу, полученному в ответе на предыдущюю задачу. Например, если ответ был 123, то доступен файл 123.txt

С волнением Алиса открыла файл и увидела множество строк текста. И тут же в углу появилась подсказка: 

"Найди все строки, что с частого слова начинаются,
После этого слова все тайны шифра открываются!"


P.S. Выведите на экран все нужные строки, в том порядке, в котором они следуют в файле. 

Самое частое слово

Словари Алгоритмы обработки Ввод, вывод данных

Алиса только что завершила подсчет уникальных слов в файле. Вдруг экран её компьютера ярко засветился, и на нем появилась новая информация:

"Система обновлена! Новый файл доступен: Число.txt."
P.S. Число в названии файла равно числу, полученному в ответе на предыдущюю задачу. Например, если ответ был 123, то доступен файл 123.txt

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

"В файле слов, как в море, не счесть,
Найди, какое из них чаще здесь есть!"


Алиса быстро принялась за дело! И ты не отставай... Найди ответ

P.S. Ваша программа должны вывести самое частое слово и через пробел сколько раз оно встречается. Вам может помочь в этом структура данных "словарь". Вспомните как с ней работать тут

Уникальные слова

Множества Алгоритмы обработки

После того как Алиса узнала количество слов в загадочном файле, она заметила, что это число совпадает с названием другого текстового файла — ЧИСЛО.txt.
P.S. Число в названии файла равно числу, полученному в ответе на предыдущюю задачу. Например, если ответ был 123, то доступен файл 123.txt

"Как интересно!" — подумала она. "Кажется, это не случайность!"
Алиса открыла новый файл и увидела множество слов, но среди них были повторяющиеся.

"Чтобы разгадать шифр, мне нужно узнать, сколько уникальных слов в этом файле," — решила она.

Сколько уникальных слов насчитала Алиса?


P.S. Имя файла равно числу, полученному в результате решения предыдущей загадки...

Боря сортирует матрицу

Использование сортировки Алгоритмы обработки

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

Входные данные
Вводятся сначала два числа N  и M  (натуральные, не превосходящие 30), а затем N  строк по M  разделенных пробелами чисел в каждой. Числа целые и не превышают по модулю 10000.

Выходные данные
Вывести N  строк по M разделенных пробелами чисел в каждой строке.

Сокращение одночленов

реализация Алгоритмы обработки

Одночлен - это выражение, состоящее из однобуквенных переменных с операциями умножения и возведения в целочисленную степень. Именами переменных являются малые латинские буквы. Умножение обозначается символом '*' (ASCII 42), возведение в степень - символом '^' (ASCII 94). Показатель степени состоит из одной десятичной цифры от 1 до 9. Примеры одночленов: t, a*b*c^2, y*d^1*y^9.

Требуется по данным N + M одночленам построить дробь, равную произведению первых N одночленов, делённому на произведение оставшихся M одночленов. При этом:

1) Числитель и знаменатель дроби должны быть одночленами.

2) Переменная не должна встречаться в дроби более одного раза (т. е. дробь необходимо сократить).

3) Степени переменных должны быть целыми числами большими или равными 2.

4) В числителе и знаменателе переменные должны быть отсортированы по алфавиту.

Входные данные
В первой строке входного файла содержатся числа N и M (1 <= N, M <= 999), разделённые пробелами.

Следующие N + M строк содержат по одному одночлену каждая. Длина каждой строки не превосходит 100 символов.

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

Максимальный - вперед

Алгоритмы обработки Одномерные массивы

Требуется поменять местами первый элемент массива с максимальным.

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

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

Номер максимального элемента массива

Алгоритмы обработки Одномерные массивы

Напишите программу, которая находит номер максимального элемента массива.

Входные данные
В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива.

Во второй строке вводится N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

Выходные данные
Вывести одно число – номер максимального элемента в массиве. Если в массиве несколько максимальных элементов, выведите номер любого из них.

Установка Козырька

Алгоритмы обработки Префиксные суммы(минимумы, ...)

Вадим работает в ЖКХ и сегодня он крайне озабочен вопросов сосулек. А именно он наблюдает за домом по адресу — проспект Программистов, дом 404. В доме \(n\) этажей, на каждом этаже по \(m\) окон, включая первый. Окна на каждом этаже пронумерованы слева направо от \(1\) до \(m\). \(i\)-e окно \(j\)-го этажа находится ровно под \(i\)-м окном \(j + 1\)-го этажа. Под некоторыми окнами свисают сосульки.

Вадим руководит установкой на дом козырька, который будет установлен ниже первого этажа и проходить под \(d\) окнами. То есть, если начало козырька находится под окном с номером \(i\), то он проходит под всеми окнами с номерами от \(i\) до \(i + d - 1\). Вадим хочет выбрать такую позицию для козырька, чтобы над ним находилось наибольшее возможное количество сосулек и из всех подходящих вариантов выбрать такой, что начало козырька будет находиться как можно левее.

Помогите Вадиму выбрать нужное окно.

Формат входных данных
В первой строке содержатся числа \(n\), \(m\), \(d\), \(k\) — количество этажей, количество окон на каждом этаже, длина козырька и количество окон, под которыми есть сосульки, соответственно (\(1 \le n, m \le 100\),\(1 \le d \le m\), \(0 \le k \le n \cdot m\)).

В следующих \(k\) строках заданы тройки чисел \(x\), \(y\), \(z\) — номер этажа, номер окна на этаже и количество сосулек под ним (\(1 \le x \le n\), \(1 \le y \le m\), \(1 \le z \le 10\)).

Гарантируется, что каждая пара \(x\), \(y\) встречается не более одного раза.

Формат выходных данных
В единственной строке выведите одно число — номер окна, под которым следует разместить начало козырька.

Замечание

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

Во втором примере козырек имеет длину один и если его поставить под окнами с номерами \(1\), \(2\) или \(3\), над ним будет соответственно \(0\), \(1\) или \(1\) сосулька. Таким образом подходит две позиции начала козырька, выбираем более левую.

В третьем примере возможны две позиции для козырька, но так как под окнами с \(1\)-м, в отличии от окон \(3\)-м номером, нет сосулек, а окна с номерами \(2\) будут над козырьком в любом случае, существует единственный оптимальный вариант разместить козырек.

Поиск числа - 2

Алгоритмы обработки реализация

Однажды, девочка Аня записала несколько целых чисел лежащих в диапазоне от \(-1000\) до \(1000\) в некоторую изначально пустую строку \(S\), разделив каждые два пробелом. Но стоило ей отвернуться, как злой хулиган Гриша заменил все пробелы в строке на подстроки из строчных латинских букв. Тем не менее и этого ему показалось мало, поэтому он мог дописать латинских строчных букв еще и в начало и конец строки \(S\).

Аня очень расстроилась, увидев это безобразие, но времени на расшифровку у нее нет. Однако, ей срочно понадобилось узнать, какое число было наименьшим. Ваша задача — помочь ей.

Формат входных данных
В первой строке содержится одно натуральное число \(n\) — количество символов в строке \(S\) (\(1 \le n \le 100\)).

Во второй строке содержится строка \(S\), состоящая из латинских строчных букв, цифр и знаков <<->>.

Гарантируется:

  • В данной строке содержится хотя бы одна цифра

  • В следующей позиции после каждого знака <<->> находится цифра

  • В числах, изначально записанных в строку не было ведущих нулей, а также каждое из них не превосходило \(1000\) по модулю.

Формат выходных данных
В единственной строке выведите наименьшее число, которое было у Ани в строке.

Обратите внимание, что \(0\) следует выводить без знака <<->>.

Поиск числа

Алгоритмы обработки Строки

Однажды, девочка Аня записала несколько целых чисел лежащих в диапазоне от \(-1000\) до \(1000\) в некоторую изначально пустую строку \(S\), разделив каждые два пробелом. Но стоило ей отвернуться, как злой хулиган Гриша заменил все пробелы в строке на подстроки из строчных латинских букв. Тем не менее и этого ему показалось мало, поэтому он мог дописать латинских строчных букв еще и в начало и конец строки \(S\).

Аня очень расстроилась, увидев это безобразие, но времени на расшифровку у нее нет. Однако, ей срочно понадобилось узнать, какое число было наибольшим. Ваша задача — помочь ей.

Формат входных данных
В первой строке содержится одно натуральное число \(n\) — количество символов в строке \(S\) (\(1 \le n \le 100\)).

Во второй строке содержится строка \(S\), состоящая из латинских строчных букв, цифр и знаков <<->>.

Гарантируется:

  • В данной строке содержится хотя бы одна цифра

  • В следующей позиции после каждого знака <<->> находится цифра

  • В числах, изначально записанных в строку не было ведущих нулей, а также каждое из них не превосходило \(1000\) по модулю.

Формат выходных данных
В единственной строке выведите наибольшее число, которое было у Ани в строке.

Обратите внимание, что \(0\) следует выводить без знака <<->>.

 

Бизнесмен Василий

Префиксные суммы(минимумы, ...) Алгоритмы обработки

Бизнесмен Василий готовится к уплате налогов за квартал (три месяца). Действующая налоговая система в государстве, в котором Василий ведет свой бизнес, устроена таким образом, что величина налога зависит от прибыли в конце каждого месяца. Чистая прибыль бизнесмена определяется как разница между доходом и расходом. Разумеется, если бизнес идет не очень удачно, прибыль бизнесмена может быть отрицательной —в этом случае речь идет об убытке.

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

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

По имеющимся данным определите количество способов выполнить такое разбиение.

Входные данные

В первой строке входных данных содержится единственное целое число N — количество записей в журнале Василия (3 ≤ N ≤ 105).

В следующих N строках записаны целые числа ai, соответствующие записям в журнале (−108 ≤ ai ≤ 108).

Выходные данные

Программа должна вывести единственное целое число — количество способов выполнить необходимое разбиение.

Примеры

Ввод

Вывод

Пояснение

6
4
3
-3
5
-1
4

2

В журнале записано 6 чисел: 4, 3, −3, 5, −1, 4 Из них можно получить два разбиения: [4], [3, −3, 5, −1], [4] и [4, 3, −3], [5, −1], [4].

3
0
0
0

1

В журнале записаны три нуля — имеется единственное возможное разбиение [0], [0], [0], потому что в каждой записи должно быть хотя бы одно число.

4
3
-2
3
1

0

Выполнить подходящее разбиение невозможно.

Жребий Крижановского

Словари Алгоритмы обработки реализация

Одиночество есть жребий всех выдающихся умов.

Артур Шопенгауэр

Однажды в летнем лагере после ужина осталась лишняя булочка. Выяснить, кому она достанется, дети решили с помощью жребия Крижановского. Правила этой игры такие: каждый участник называет ведущему натуральное число. Среди этих чисел выбираются те, которые были названы ровно один раз, а назвавший минимальное из этих чисел объявляется победителем. Обратите внимание, что победителя может не быть, если среди названных чисел каждое встречается несколько раз.

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

Формат входных данных
В первой строке дано одно число \(n\) (\(1 \le n \le 10^5\)) — количество участников игры. Далее в \(n\) строках вводятся названные участниками натуральные числа, не превосходящие \(10^9\).

Формат выходных данных
Программа должна вывести число, написанное победителем. Если победителя нет, то нужно вывести число \(-1\).


Замечание

В первом примере из условия участвовали \(7\) игроков и они назвали числа \(5\), \(1\), \(1\), \(3\), \(4\), \(3\), \(1\). Сначала оставим только те числа, которые встречаются ровно один раз: \(5\) и \(4\). Минимальное из этих чисел равно \(4\).

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

Контрольное значение - 5

Алгоритмы обработки Линейный поиск

Профессор Селезнев передает Алисе зашифрованную информацию, которая представляет собой последовательность целых чисел.  Все числа данной последовательности не превышают 107. Каждое число передается в течении одной секунды. Чтобы понять, что данные переданы правильно, Алисе необходимо определить контрольное значение, которое вычисляется по следующему правилу,
- берутся три переданных значения из последовательности таким образом, чтобы между какими-либо двумя моментами передачи прошло ровно K секунд;
- вычисляется сумма выбранных чисел, которая должна быть минимальной. Данная сумма является контрольным значением.
Помогите Алисе определить контрольное значение.


Формат входных данных
В первой строке записано количество чисел N (1 ≤ N ≤ 2·105) и целое число K (1 ≤ K < 105, K < N). Каждая из следующих N строк содержит одно целое число, по модулю не превышающее 107.


Формат выходных данных
Выведите одно число - контрольное значение.
 

Контрольное значение - 3

Алгоритмы обработки реализация

Профессор Селезнев передает Алисе зашифрованную информацию, которая представляет собой последовательность целых чисел. Все числа данной последовательности не превышают 107. Каждое число передается в течении одной секунды. Чтобы понять, что данные переданы правильно, Алисе необходимо определить контрольное значение, которое вычисляется по следующему правилу,
- берутся три переданных значения из последовательности таким образом, чтобы между между какими-либо двумя моментами передачи прошло ровно K секунд;
- вычисляется сумма выбранных чисел, которая должна быть максимальной. Данная сумма является контрольным значением.
Помогите Алисе определить контрольное значение.


Формат входных данных
В первой строке записано количество чисел N (1 ≤ N ≤ 2·105) и целое число K (1 ≤ K < 105, K < N). Каждая из следующих N строк содержит одно целое число, по модулю не превышающее 107.


Формат выходных данных
Выведите одно число - контрольное значение.
 

Контрольное значение - 2

Префиксные суммы(минимумы, ...) Алгоритмы обработки Линейные алгоритмы

Профессор Селезнев передает Алисе зашифрованную информацию, которая представляет собой последовательность целых чисел. Все числа данной последовательности не превышают 107. Каждое число передается в течении одной секунды. Чтобы понять, что данные переданы правильно, Алисе необходимо определить контрольное значение, которое вычисляется по следующему правилу:
- берутся три переданных значения из последовательности таким образом, чтобы между между какими-либо двумя соседними моментами передачи прошло ровно K секунд (между передачей первого выбранного числа и второго или между передачей второго выбранного числа и третьего);
- вычисляется сумма выбранных чисел, которая должна быть максимальной. Данная сумма является контрольным значением.
Помогите Алисе определить контрольное значение.


Формат входных данных
В первой строке записано количество чисел N (1 ≤ N ≤ 2·105) и целое число K (1 ≤ K < 105, K < N). Каждая из следующих N строк содержит одно целое число, по модулю не превышающее 107.


Формат выходных данных
Выведите одно число - контрольное значение.
 

Число делителей

Простые числа и разложение на множители Алгоритмы обработки

Задано число \(n\). Требуется найти число от 1 до \(n\), включительно, которое имеет максимальное число положительных целых делителей.

Например, если \(n = 20\), то искомое число — 12, у него 6 делителей: 1, 2, 3, 4, 6 и 12.

Формат входных данных
На вход подается одно число \(n\) (\(1 \le n \le 100\,000\))

Формат выходных данных
Выведите на первой строке число от 1 до \(n\), включительно, которое имеет максимальное число делителей. На второй строке выведите число его делителей.

Если есть несколько чисел от 1 до \(n\) с максимальным числом делителей, выведите любое из них.

Пути Дика

Алгоритмы обработки Задача на реализацию

Одной из визуализаций правильных скобочных последовательностей являются пути Дика. Путь Дика — путь на клетчатой плоскости, составленный из диагональных отрезков, соединяющих противоположные углы единичных квадратов. Путь начинается из начала координат, открывающейся скобке соответствует отрезок, поднимающийся вправо вверх, а закрывающиейся — спускающийся вправо вниз. На рисунке показан путь Дика для скобочной последовательности <<(())()>>.

Требуется написать программу, которая изображает путь Дика для заданной правильной скобочной последовательности с использованием символов <<.>> (ASCII 46) для пустых единичных квадратов, <</>> (ASCII 47) для единичных квадратов, содержащих отрезок, поднимающийся вверх, и <<
>> (ASCII 97) для единичных квадратов, содержащих отрезок, спускающийся вниз.

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

Формат входных данных
На ввод подается правильная скобочная последовательность. Она непуста и имеет длину не более \(100\) символов.

Формат выходных данных
Требуется вывести изображение пути Дика для заданной во вводе правильной скобочной последовательности. Количество выведенных строк должно быть минимальным возможным. Все строки должны иметь одинаковую длину. Эта длина должна быть минимальной возможной для данного ввода.

 

Штангист

Линейные алгоритмы Алгоритмы обработки

Штангист готовится к соревнованиям и хочет проанализировать набранную мышечную массу.

Он анализирует записи о своих тренировках за последние \(n\) дней. Для каждого дня ему известна масса тела утром \(x_i\) и масса тела вечером \(y_i\). Также известно, в какие дни штангист проводил тренировку.

Он считает, что в те дни, когда он проводил тренировку, увеличение массы тела, если оно произошло, равно приросту мышечной массы, а если масса тела уменьшалась или тренировки не было, то прирост мышечной массы в этот день равено \(0\).

Помогите штангисту определить суммарный прирост его мышечной массы.

Формат входных данных
Первая строка ввода содержит число \(n\) — количество анализируемых дней (\(1 \le n \le 1000\)).

Вторая строка содержит \(n\) целых чисел, \(i\)-е число равно \(1\), если в \(i\)-й день была тренировка и \(0\), если в \(i\)-й день тренировки не было.

Следующие \(n\) строк содержат результаты измерения массы тела штангиста: по два целых числа \(x_i\) и \(y_i\) — массу тела в граммах (\(30\,000 \le x_i, y_i \le 200\,000\)).

Формат выходных данных
Выведите одно целое число — суммарный прирост мышечной массы штангиста.

Соседние цвета

реализация Алгоритмы обработки

Этнограф изучает народ крайнего севера. Его заинтересовала структура бусов, которые составляются из бусин трех цветов: синего, зеленого и красного. Этнографу кажется, что частота, с которой определенные цвета встречаются у соседних бусин, позволяет сделать выводы о культуре народа.

Бусы можно задать в виде строки из заглавных английских букв: <<R>> для красной бусины, <<G>> для зеленой бусины и <<B>> для синей бусины. Соседние буквы в строке соответствуют соседним бусинам. Бусы находятся на круглой нитке, поэтому первая и последняя бусины также являются соседними.

Например, в ожерелье <<RGRGRGRG>> 8 раз рядом встречаются зеленая и красная бусины, а в ожерелье <<RRRR>> 4 раза рядом встречаются две красные бусины.

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

Формат входных данных
На первой строке ввода находится чиcло \(n\) — количество бус в распоряжении этнографа (\(1 \le n \le 100\)).

На каждой из следующих строк находится строка из букв <<R>>, <<G>> и <<B>>. Длина каждой строки не меньше \(3\) и не больше \(1000\).

Формат выходных данных
Выведите одну или более строк по два символа: бусины каких двух цветов наибольшее число раз встречаются рядом. Если несколько пар бусин встречаются рядом одинаково часто, необходимо вывести все такие пары, по одной на строке, в любом порядке. Цвета в паре можно выводить в любом порядке.

Ромб

Алгоритмы обработки Двумерные массивы

На клетчатом поле размера \(n \times n\), где \(n = 2k+1\) — нечетное число, необходимо изобразить ромб.

Центром поля будем называть клетку \((k + 1, k + 1)\). Расстояние между двумя клетками \((x_1, y_1)\) и \((x_2, y_2)\) будем называть величину \(|x_1 - x_2| + |y_1 - y_2|\).

Ромб с параметрами \((a, b)\) — это множество клеток, расстояние от которых до центра лежит в диапазоне от \(a\) до \(b\), включительно.

По заданным \(n\), \(a\) и \(b\) изобразите ромб.

Формат входных данных
На первой строке ввода находится целое число \(n\) (\(1 \le n \le 201\), \(n\) нечетно).

На второй строке ввода находится целое число \(a\). На третьей строке ввода находится целое число \(b\) (\(0 \le a \le b\), если \(k\) таково, что \(n = 2k+1\), то \(b \le k + 1\)).

Формат выходных данных
Выведите \(n\) строк по \(n\) символов. Клетка ромба обозначается символом <<*>>, клетка, не лежащая в ромбе, обозначается символом <<.>>.

Клавиатура

Алгоритмы обработки

Всем известно, что со временем клавиатура изнашивается, и клавиши на ней начинают залипать. Конечно, некоторое время такую клавиатуру еще можно использовать, но для нажатий клавиш приходиться использовать большую силу.
 
При изготовлении клавиатуры изначально для каждой клавиши задается количество нажатий, которое она должна выдерживать. Если знать эти величины для используемой клавиатуры, то для определенной последовательности нажатых клавиш можно определить, какие клавиши в процессе их использования сломаются, а какие – нет.
 
Требуется написать программу, определяющую, какие клавиши сломаются в процессе заданного варианта эксплуатации клавиатуры.
 
Формат входных данных
Первая строка входного файла содержит целое число n (1 ≤ n ≤ 100) – количество клавиш на клавиатуре. Вторая строка содержит n целых чисел – с1, с2, … , сn, где сi (1 ≤ сi ≤ 100000) – количество нажатий, выдерживаемых i-ой клавишей. Третья строка содержит целое число k (1 ≤ k ≤ 100000) – общее количество нажатий клавиш, и последняя строка содержит k целых чисел pj (1 ≤ pj ≤ n) – последовательность нажатых клавиш.
 
Формат выходных данных
В выходной файл необходимо вывести n строк, содержащих информацию об исправности клавиш. Если i-ая клавиша сломалась, то i-ая строка должна содержать слово “yes” (без кавычек), если же клавиша работоспособна – слово “no”.

Анаграммы

Алгоритмы обработки Строки

Слово называется анаграммой другого слова, если оно может быть получено перестановкой его букв.
 
Формат входных данных
Даны два слова на отдельных строках. Слова состоят из строчных латинских букв и цифр. Длины слов не превышают 255.
 
Формат выходных данных
Требуется вывести "YES"  – если введенные слова являются анаграммами друг друга, "NO"  – если нет.

Изменение элементов

Двумерные массивы Алгоритмы обработки

В двумерном массиве NxM замените значения всех четных элементов массива на значение A

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

В первой строке вводятся через пробел количество строк N (1<=N<=20) и количество столбцов M (1<=M<=20) двумерного массива. Далее идет N строк по M элементов в строке - элементы двумерного массива. Все элементы двумерного массива по модулю не превышают  50. В N+1 строке записано число A (100<=A<=200)


Формат выходных данных
Выведите измененный двумерный массив на экран. Элементы в строке должны разделяться одним пробелом.
 

Изменение элемента

Двумерные массивы Алгоритмы обработки

В двумерном массиве NxM замените значение элемента, расположенного на пересечении строки n1 и столбца m1, на значение A. Нумерация строк и столбцов начинается с 1.

Формат входных данных
В первой строке вводятся через пробел количество строк N (1<=N<=20) и количество столбцов M (1<=M<=20) двумерного массива. Далее идет N строк по M элементов в строке - элементы двумерного массива. Все элементы двумерного массива по модулю не превышают  50. В N+1 строке идут два числа n1, m1 (1<=n1<=N, 1<=m1<=M). В N+2 строке записано число A

Формат выходных данных
Выведите измененный двумерный массив на экран. Элементы в строке должны разделяться одним пробелом.
 

Перестановка двух элементов - 4

Алгоритмы обработки Одномерные массивы

В числовом массиве из N чисел переставьте местами элемент с индексом first с элементом, который имеет максимальное значение. Если максимальных элементов несколько, то необходимо взять последний из них (максимальный элемент с большим индексом). Индексация элементов начинается с 0.

Входные данные
В первой строке записаны через пробел два числа N - количество элементов одномерного массива и число first. Во второй строке записаны N чисел numsi - элементы массива.

Ограничения
1 <= N <= 105
-109 <= numsi <= 109
0 <= first < N


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

Примеры
Входные данные Выходные данные
1
5 2
1 -2 -1 2 -2
1 -2 2 -1 -2

* Две самые большие цифры (java)

Цикл while Алгоритмы обработки

Дано натуральное число N (\(N<=10^9\)). Определить две самые большие цифры числа. 

Входные данные 
На вход подается одно число (число содержит как минимум 2 различные цифры).

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

 

Примеры
Входные данные Выходные данные
1 45545 5 4
2 1113 3 1

Обработка потока данных - 2 (java)

Цикл while Алгоритмы обработки

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

Входные данные 
На вход поступают числа последовательности, по одному числу в строке. Ноль - признак окончания ввода.

Выходные данные 
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 3
5
3
4
7
0
3

Обрабатываем цифры числа - 1 (java)

Цикл while Алгоритмы обработки

Дано натуральное число N. Определить количество его цифр, кратных z

Входные данные 
Вводятся два числа через пробел, сначала натуральное число N, затем - z (\(0< z <=9\)).

Выходные данные 
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 432 2 2

Максимум и минимум (java)

Цикл while Алгоритмы обработки

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

Входные данные 
На вход подаются целые числа (по одному числу в строке).

Выходные данные 
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 -1
-2
1
7
2
0
2

Максимальное среди четных чисел (java)

Цикл while Алгоритмы обработки

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

Входные данные
На вход программе подаются числа, по одному числу в строке.

Выходные данные
Выведите ответ на задачу
 

 

Примеры
Входные данные Выходные данные
1 1
2
6
0
6

 

Количество чисел, удовлетворяющих условию (java)

Цикл while Алгоритмы обработки

На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём (ноль не входит в последовательность). Определить, сколько получено чисел, которые делятся на 3.

Входные данные
На вход программе подаются числа, по одному числу в строке.

Выходные данные
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 1
2
3
0
1

 

Минимальная и максимальная цифры (java)

Цикл while Алгоритмы обработки

Дано натуральное число N. Напишите программу, которая выводит в первой строке его максимальную цифру, во второй строке - его минимальную цифру.

Входные данные 
Вводится одно число N.

Выходные данные 
Вывести два числа, по одному в строке:
- в первой строке - максимальную цифру числа N
- во второй строке - минимальную цифру числа N.
 

 

Примеры
Входные данные Выходные данные
1 21345 5
1

Доля в сумме

Двумерные массивы Алгоритмы обработки

Дан двумерный массив A размерностью NxM. Напишите программу, которая определяет сумму всех элементов матрицы, а также какую долю в этой сумме составляет сумма элементов каждого столбца.

Входные данные
В первой строке входных данных записаны через один пробел два натуральных числа N и M ( 0 < N, M <= 25). Далее идут N строк по M положительных целых чисел в каждой - элементы матрицы A (каждый элемент матрицы не превышает 105).

Выходные данные
В первой строке выведите сумму всех элементов матрицы. 
Во второй строке выведите M чисел через пробел - долю, которую составляет сумма элементов каждого столбца в общей сумме. Долю выводить с округлением до ближайшего целого числа, не большего доли. Первое число в строке - доля в общей сумме элементов первого столбца, второе число - доля в сумме элементов второго столбца и т.д. (нумерация столбцов с 1).
 
 

Примеры
Входные данные Выходные данные
1 4 4
1 2 3 4 
4 3 2 1
2 1 4 3
3 4 1 2
40
25 25 25 25

Шахматный конь

Двумерные массивы Алгоритмы обработки

Шахматный конь, расположенный в центре доски держит под ударом 8 полей. В углу только лишь 2 поля.
Вам задано расположение коня на шахматной доске. Выведите на экран шахматную доску, с расположенным на ней конем, а также отметьте все поля, которые конь держит под ударом. Поле, где расположен конь, отметьте английской буквой «K». Поля, которые он держит под ударом, отметьте символами «*». Остальные клетки заполните точками.


Входные данные

Программа получает на вход два числа - координаты коня на шахматной доске (доска размером 8х8). Координаты вводятся на одной строке через пробел. Первое число обозначает номер строки, а второе — номер столбца. Все числа принимают значения от 1 до 8.


Выходные данные

Выведите на экран изображение доски так, как это показано в примере. Обратите внимание, что символы в одной строке разделены пробелом.

 
Примеры
Входные данные Выходные данные
1
4 5
. . . . . . . . 
. . . * . * . . 
. . * . . . * . 
. . . . K . . . 
. . * . . . * . 
. . . * . * . . 
. . . . . . . . 
. . . . . . . . 

2022

Использование сортировки Алгоритмы обработки Бинарный поиск в массиве

Эвелине на Новый год подарили массив a из n неотрицательных целых чисел, каждое из которых не превосходит 2022. Её заинтересовал вопрос, сколько в этом массиве существует различных пар индексов, у которых первый индекс в паре меньше второго, таких, что сумма соответствующих элементов массива равна 2022. Формально, она хочет понять, сколько существует пар 1 <= i,j <= n, для которых выполняется ai+aj=2022.

Уже наступил февраль, а Эвелина все еще не успела посчитать ответ на вопрос, потому что массив слишком большой. Но она смогла запомнить его и рассказала о своем массиве вам, чтобы получить помощь с поиском ответа.



Входные данные
В первой строке содержится одно целое число n (1 <= <= 100000) - количество элементов массива. Во второй строке заданы n целых чисел a1, a2, ..., an (0 <= a<= 2022) - элементы массива Эвелины.

Выходные данные
Выведите одно число - количество подходящих пар.

Примечание

В первом примере не существует пар с суммой 2022.

Во втором подходят пары (1, 2), (3, 4).

В третьем примере подходят все пары (2, 4), (2, 5), (3, 4), (3, 5). 

 
Примеры
Входные данные Выходные данные
1
2
1 2022
0
2
4
1000 1022 1001 1021
2
3
5
700 1 1 2021 2021
4

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

Одномерные массивы Алгоритмы обработки

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


Входные данные

Сначала задано число N - количество элементов в массиве (1 <= N <= 100). Далее через пробел записаны N чисел - элементы массива. Массив состоит из целых чисел, находящихся в пределах от -231 до 231


Выходные данные

Необходимо вывести единственное число - количество различных чисел в массиве.

 
Примеры
Входные данные Выходные данные
1 5
1 1 1 2 2
2

Количество элементов, равных максимальному

Алгоритмы обработки Цикл while

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

Входные данные
Вводится последовательность целых чисел, оканчивающаяся числом 0 (само число 0 в последовательность не входит, а служит как признак ее окончания).

Выходные данные
Выведите ответ на задачу.
 
 

Примеры
Входные данные Выходные данные
1 5
4
8
8
8
0
3

Программирование

Строки Алгоритмы обработки

Для решения задачи используйте:
- в С++ метод substr(); 
- в Python срезы.

Дано слово programming. Получите слово rog.

Слово считывается с клавиатуры.
 

№ теста Входные данные Выходные данные
1 programming rog

Программирование

Строки Алгоритмы обработки

Для решения задачи используйте:
- в С++ метод substr(); 
- в Python срезы.

Дано слово programming. Получите слово gram.

Слово считывается с клавиатуры.
 

№ теста Входные данные Выходные данные
1 programming gram

Подпоследовательность с K числами

Префиксные суммы(минимумы, ...) Алгоритмы обработки

Дана последовательность из N чисел. Рассматриваются все её непрерывные подпоследовательности, которые содержат ровно K отрицательных чисел, заканчивающихся цифрой m. Найдите среди них подпоследовательность с максимальной суммой.  Программа должна вывести одно число – максимальную сумму элементов такой подпоследовательности. Гарантируется, что в исходной последовательности существует хотя бы K отрицательных чисел, заканчивающихся цифрой m.

Входные данные
В первой строке программа получается три числа: количество чисел в последовательности N (100 <= N <= 5000000), натуральное число K и целое число m (0 <= m <= 9). В каждой из следующих N строк записано одно целое число, не превышающее по модулю 10000. Гарантируется, что сумма любой подпоследовательности исходной последовательности не превышает по модулю 109.

Выходные данные
Выведите на экран ответ на задачу.
 
 

Примеры
Входные данные Выходные данные Пояснение
1 8 2 3
6
-3
-2
4
-1
-13
8
13
12 Нужные нам числа -3 и -13. Вся исходная последовательность даст максимальную сумму элементов.

Подпоследовательность с максимальной суммой

Префиксные суммы(минимумы, ...) Алгоритмы обработки Задача на реализацию

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

Входные данные
В первой строке записаны два числа: количество чисел в последовательности N (1 <= N <= 106) и число (1 <= K <= 100). Далее идет N строк, по одному целому числу в строке. Каждое число не превышает 10000.

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

Примеры
Входные данные Выходные данные
1 5 2
2
-2
2
-2
2
2 3

* Две самые большие цифры - 3

Алгоритмы обработки Цикл for

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

Входные данные 
На вход подается одно число N (10 <= N <= 109).

Выходные данные 
Выведите ответ на задачу.

 

Примеры
Входные данные Выходные данные
1 45545 5 5
2 1113 3 1
3 444 4 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

Кольцевые гонки

Алгоритмы обработки реализация

Участники кольцевых гонок на одноколесных велосипедах нумеруются числами от 1 до N. Им предстоит проехать K кругов и победителем является тот, кто проехал их раньше всех. Участники стартуют одновременно с некоторой линии, которая называется конец круга. Каждый раз, когда участник пересекает эту линию, его номер фиксируется автоматической системой с высокой точностью (то есть два участника не могут пересечь эту линию одновременно). После прохождения K кругов эта же линия является финишной прямой. К сожалению, некоторые участники сходят с дистанции и проезжают меньшее количество кругов.
Организаторы соревнования забыли число K и стесняются спросить его у участников. Помогите организаторам определить победителя соревнования, используя только записи с системы фиксации. Гарантируется, что хотя бы один из участников преодолел необходимые K кругов и никто из участников не проехал более K кругов. Первая фиксация номера участника происходит после
прохождения первого круга.

Формат входных данных
В первой строке задаются целые числа N и M (1 ≤ N ≤ 100, 1 ≤ M ≤ 10000) — количество участников соревнования и записей с системы фиксации соответственно. Во второй строке задается M целых чисел от 1 до N – номера участников в том порядке, как
они фиксировались системой.

Формат выходных данных
Выведите одно число — номер победителя
 
 

Примеры
Входные данные Выходные данные
1 3 4
1 3 3 1
3
2 3 5
1 1 2 3 1
1

ASCII график - 2

Алгоритмы обработки Линейные алгоритмы

Недавно Вася решил всерьез заняться машинным обучением и распознаванием образов. Однако, наука это обширная, а
начинать с чего-то надо, поэтому его учитель информатики посоветовал ему начать с анализа ASCII рисунков.
Он дал Васе рисунок ASCII-графика, который выглядит следующим образом: он представляет собой прямоугольник n × m, состоящий из символов «*» и «.». Левая верхняя клетка прямоугольника считается началом координат — точкой (0, 0), верхняя строка таблицы — осью OX, направленной слева направо, а левый столбец — осью OY, направленной сверху вниз. Таким образом, клетка (x, y) таблицы отвечает за точку (x, y) на графике функции, и если в этой клетке таблицы стоит «*», то f(x) = y, а противном случае в клетке таблицы стоит «.». Гарантируется, что функция, график которой дан Васе, непрерывна и однозначно определена на всем промежутке, то есть:
В каждом столбце таблицы стоит ровно один символ «*»;
В соседних столбцах символы «*» находятся либо в соседних по стороне, либо в соседних по углу клетках.
Для начала, чтобы проанализировать этот график, Вася хочет найти количество локальных максимумов в нем, то есть таких x, что f(x - 1) > f(x) < f(x + 1) (если одно из значений f(x - 1) или f(x + 1) не определено, счиается, что неравенство выполняется).
Входные данные
В первой строке входного находятся два натуральных числа n и m — количество строк и количество столбцов в таблице соответственно (1 ≤ n, m ≤ 100).
В каждой из следующих n строк содержится строка из m символов — описание таблицы. Гарантируется, что таблица представляет собой график функции, описанной в условии.
Выходные данные
В единственной строке выведите одно число — количество локальных минимумов в данном графике функции.
 

Ввод Вывод
4 6
.*....
*.*.*.
...*.*
......
 
2
3 5
....*
****.
.....
1

Звездные треугольники

Алгоритмы обработки реализация

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

Формат входного файла
В первой строке задается N — количество звезд на небе (3  ≤ N ≤ 300000). В каждой из следующих N строк заданы целые X, Y (|X, Y| ≤  109) — координаты соответствующей звезды.

Формат выходного файла
Выведите ответ к задаче.
 

Примеры
Входные данные Выходные данные
1 3
0 0
1 0
0 1
1
2 4
0 0
1 0
0 1
1 1
4

Надежный пароль

Алгоритмы обработки реализация

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

По списку всех слов в словаре помогите Вениамину выбрать пароль. Он должен быть такой, чтобы Денису пришлось перебрать как можно больше вариантов, прежде чем он найдет нужный.

Входные данные
В первой строчке вводится N — количество слов в cловаре (1 ≤ N ≤ 103). В следующих N строчках вводятся слова — строки длиной не более 255 символов, состоящие только из маленьких латинских букв. Слова отсортированы в алфавитном порядке.

Выходные данные
Выведите искомый пароль. Если подходящих паролей несколько, выведите тот, который идёт в словаре позже всех остальных.

Примеры

Входные данные Выходные данные
1 7
arhimed
computer
contest
informatics
programming
python
team
python

Единицы

Алгоритмы обработки Использование сортировки

В числе подсчитали количество единиц, в получившемся опять подсчитали количество единици т.д.
Например: 111211121112111 - 12 - 1 - 1 - 1 - ...

В итоге полученная последовательность стабилизировалась. На каком числе?

Например, последовательность 111211121112111 - 12 - 1 - 1 - 1 - ... стабилизировалась на числе 1.

Входные данные
Вводится одно натуральное число, состоящее из не более чем 100 цифр.

Выходные данные
Выведите число, на котором стабилизировалась последовательность.

Примеры
Входные данные Выходные данные
1 12345 1
2 2007 0

Делители числа

Простые числа и разложение на множители Алгоритмы обработки

Для натурального числа N (1<=N<=105) выведите на экран все его делители, включая 1 и само число N, в последней строке выведите количество этих делителей, включая 1 и само число N.

Входные данные
На вход подается натуральное число N (1<=N<=105).

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

Примеры
Входные данные Выходные данные
1 4 1 2 4
3

ASCII график

Алгоритмы обработки Одномерные массивы

Недавно Вася решил всерьез заняться машинным обучением и распознаванием образов. Однако, наука это обширная, а начинать с чего-то надо, поэтому его учитель информатики посоветовал ему начать с анализа ASCII рисунков.
Он дал Васе рисунок ASCII-графика, который выглядит следующим образом: он представляет собой прямоугольник n × m, состоящий из символов «*» и «.». Левая верхняя клетка прямоугольника считается началом координат — точкой (0, 0), верхняя строка таблицы — осью OX, направленной слева направо, а левый столбец — осью OY, направленной сверху вниз. Таким образом, клетка (x, y) таблицы отвечает за точку (x, y) на графике функции, и если в этой клетке таблицы стоит «*», то f(x) = y, а противном случае в клетке таблицы стоит «.». Гарантируется, что функция, график которой дан Васе, непрерывна и однозначно определена на всем промежутке, то есть:
В каждом столбце таблицы стоит ровно один символ «*»;
В соседних столбцах символы «*» находятся либо в соседних по стороне, либо в соседних по углу клетках.
Для начала, чтобы проанализировать этот график, Вася хочет найти количество локальных максимумов в нем, то есть таких x, что f(x - 1) < f(x) > f(x + 1) (если одно из значений f(x - 1) или f(x + 1) не определено, счиается, что неравенство выполняется).
Входные данные
В первой строке входного находятся два натуральных числа n и m — количество строк и количество столбцов в таблице соответственно (1 ≤ n, m ≤ 100).
В каждой из следующих n строк содержится строка из m символов — описание таблицы. Гарантируется, что таблица представляет собой график функции, описанной в условии.
Выходные данные
В единственной строке выведите одно число — количество локальных максимумов в
данном графике функции.
 

Ввод Вывод
3 7
*.*...*
.*.*.*.
....*..
 
2
3 5
.....
****.
....*
1

Что такое матрица? Создание, вывод на экран

Двумерные массивы Алгоритмы обработки

Заполните двоичную матрицу (состоящую только из нулей и единиц) в шахматном порядке. В левом верхнем углу должен быть нулевой элемент.

Входные данные: во входной строке записаны через пробел размеры матрицы: количество строк и количество столбцов ( 1 <= M <= 100 ).

Выходные данные: программа должна вывести двоичную матрицу по строкам.

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

Заполнение матрицы с клавиатуры

Двумерные массивы Алгоритмы обработки

Напишите программу, которая выводит на экран транспонированную матрицу. Транспонирование матрицы - это преобразование, в результате которого строки становятся столбцами, а столбцы – строками. Саму матрицу изменять не нужно. Достаточно вывести ее в нужном виде.

Входные данные: в первой строке записаны через пробел размеры матрицы: количество строк и количество столбцов ( 1 ≤ ≤ 100 ). В следующих строках записаны строки матрицы, в каждой – по натуральных чисел, разделённых пробелами.

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

Пример.
Входные данные Выходные данные
1 4 5
1 2 3 4 5
6 7 8 9 3
5 4 3 2 1
7 9 8 7 6
1 6 5 7
2 7 4 9
3 8 3 8
4 9 2 7
5 3 1 6

Заполнение матрицы с клавиатуры

Двумерные массивы Алгоритмы обработки

Напишите программу, которая выводит на экран транспонированную матрицу. Транспонирование матрицы - это преобразование, в результате которого строки становятся столбцами, а столбцы – строками. Саму матрицу изменять не нужно. Достаточно вывести ее в нужном виде.

Входные данные
В первой строке записаны через пробел размеры матрицы: количество строк N и количество столбцов M ( 1 <= N, M <= 100 ). В следующих N строках записаны строки матрицы, в каждой – по M натуральных чисел, разделённых пробелами.

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

Примеры
Входные данные Выходные данные
1 4 5
1 2 3 4 5
6 7 8 9 3
5 4 3 2 1
7 9 8 7 6
1 6 5 7
2 7 4 9
3 8 3 8
4 9 2 7
5 3 1 6

Срезы

Строки Алгоритмы обработки

При решении задачи используйте метод copy()

Входные данные

Дана строка.

Выходные данные

Сначала выведите третий символ этой строки.

Во второй строке выведите предпоследний символ этой строки.

В третьей строке выведите первые пять символов этой строки.

В четвертой строке выведите всю строку, кроме последних двух символов.

В пятой строке выведите все символы с четными индексами (считая, что индексация начинается с 0, поэтому символы выводятся начиная с первого).

В шестой строке выведите все символы с нечетными индексами, то есть начиная со второго символа строки.

В седьмой строке выведите все символы в обратном порядке.

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

В девятой строке выведите длину данной строки.


Примеры
Входные данные Выходные данные
1 Abrakadabra r
r
Abrak
Abrakadab
Arkdba
baaar
arbadakarbA
abdkrA
11

Задача на удаление

Строки Алгоритмы обработки

Дана строка. Удалите из этой строки все символы @.

Входные данные

Вводится строка.

Выходные данные

Выведите ответ на задачу.
 

Входные данные Выходные данные
1 Bilbo.Baggins@bagend.hobbiton.shire.me Bilbo.Bagginsbagend.hobbiton.shire.me

Встроенные методы

Строки Алгоритмы обработки

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

Входные данные: вводится одна строка, состоящая только из латинских букв и цифр. Количество символов в строке не превышает 100.
Выходные данные: выведите слово "YES", если указанный пароль является криптостойким, и "NO" – в противном случае (заглавными латинскими буквами).
Примеры.
Входные данные Выходные данные
1 e NO
2 AAAbbb123 YES

Поиск в строке

Строки Алгоритмы обработки

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

Входные данные: вводится строка.
Выходные данные: выведите ответ на задачу.

Пример.

Входные данные Выходные данные
In the hole in the ground there lived a hobbit In tobbit

Замена подстрок в строке

Строки Алгоритмы обработки

Дана строка. Замените в этой строке все цифры 1 на слово one.

Входные данные

Вводится строка.

Выходные данные

Выведите ответ на задачу.

Примеры
Входные данные Выходные данные
1 1+1=2 one+one=2

Дополнительные способы работы с элементами массива

Одномерные массивы Алгоритмы обработки Ввод, вывод данных

На вход подается число N - количество элементов массива. 
Далее идут два массива из N целых чисел каждый: элементы первого массива идут по одному в каждой строке, элементы второго массива - записаны все в одной строке через пробел.
Заполните два массива и выведите их элементы через пробел в одну строку: первый массив в первой строке, второй массив во второй строке.

 

Примеры
Входные данные Выходные данные
1 3
1
2
3
4 5 6
1 2 3
4 5 6

Словари. Встроенные методы

Словари Алгоритмы обработки

Алфавитно-частотный словарь - это частотный словарь, в котором слова с указанием их частоты (встречаемости) расположены по алфавиту.
Постройте словарь, в котором справа от каждого слова указано сколько раз оно встречается в исходном тексте.
Признаком окончания текста является  строка с единственным словом "END!". Порядок вывода слов роли не играет.

Входные данные
На вход подаются строки текста. Последняя строка содержит одно единственное слово "END!" и является признаком окончания текста.

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

 

Примеры
Входные данные Выходные данные
1 Съешь ещё этих мягких французских булок
END!
Съешь 1
ещё 1
этих 1
мягких 1
французских 1
булок 1

 

Гости

Множества Алгоритмы обработки

Самый главный друг Дениски - это конечно же Мишка. Но кроме этого у ребят есть и другие друзья. Очень часто все друзья ходят в гости друг к другу. Дениска с Мишкой решили определить, кто из друзей виделся со всеми. Для этого Дениска вел записи посещения гостей у каждого друга. 

Входные данные
В первой строке задается число  N - общее количество друзей (\(0 < N <= 100\)). Далее идут N строк, в каждой из i-й строке записан набор чисел от 0 до N-1 - условные номера друзей, которые побывали у i-го друга. Каждый друг мог приходить к другому другу любое количество раз. В i-й строке отсутствует число i (\(0 <= i < N\)).

Выходные данные
Выведите в одной строке в порядке возрастания условные номера друзей, у которых побывали в гостях все остальные. Если таких нет, то выведите -1.

 

Примеры
Входные данные Выходные данные
1 5
1 2 
0 2 3 2 4 3 0
0 1 3 4 
0 4 2
1 2
1 2
2 3
1
2
0
-1

 

Пропуск в общежитие - 2

Задача на реализацию Алгоритмы обработки

На входе в общежитие стоит турникет. Чтобы через него пройти, требуется приложить пропуск. Пропуск надо прикладывать и при входе в общежитие и при выходе из него. Для того, чтобы исключить несанкционированные проходы, пропуск не работает два раза подряд вход и два раза подряд на выход.

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

Начальник охраны решил разобраться с данной проблемой и сделать выговоры всем нарушителям. По каждому событию входа/выхода есть запись в журнале событий. Он считает нарушителями тех владельцев пропусков, у которых произошло три события вида выход-вход-выход менее чем за dt минут.

Вам дан журнал событий турникета. Требуется вывести список тех студентов, кому будет сделан выговор.

Входные данные

В первой строке задано два числа n и dt — число записей в журнале событий турникета и ограничение времени, выбранное начальником охраны, соответственно (1≤n≤1000, 3≤dt≤1440).

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

  • Время события в формате hh:mm
  • Фамилия студента, состоящая из не более чем 20 букв латинского алфавита, первая из которых заглавная.
  • Тип события: in, если произошел вход и out, если произошел выход.

 

Гарантируется, что не существует двух событий, которые происходят одновременно. Также гарантируется, что у любых двух разных студентов разные фамилии и у одного студента не бывает двух событий одного типа подряд.

Выходные данные

В первой строке выведите число нарушителей. После чего выведите фамилии нарушителей в лексикографическом порядке.

 

Ввод Вывод
6 10
01:23 Petrov in
01:24 Ivanov out
01:25 Petrov out
01:27 Ivanov in
01:32 Petrov in
01:33 Ivanov out
1
Ivanov
6 10
01:23 Petrov in
01:24 Ivanov out
01:25 Petrov out
01:27 Ivanov in
01:33 Petrov in
01:34 Ivanov out
0

 

Пропуск в общежитие - 1

Алгоритмы обработки реализация

На входе в общежитие стоит турникет. Чтобы через него пройти, требуется приложить пропуск. Пропуск надо прикладывать и при входе в общежитие и при выходе из него. Для того, чтобы исключить несанкционированные проходы, пропуск не работает два раза подряд на вход и два раза подряд на выход.

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

Начальник охраны решил разобраться с данной проблемой и сделать выговоры всем нарушителям. По каждому событию входа/выхода есть запись в журнале событий. Он считает нарушителями тех владельцев пропусков, у которых произошло три события вида вход-выход-вход менее чем за dt минут.

Вам дан журнал событий турникета. Требуется вывести список тех студентов, кому будет сделан выговор

Входные данные
В первой строке задано два числа n и dt — число записей в журнале событий турникета и ограничение времени, выбранное начальником охраны, соответственно (1≤n≤1000, 3≤dt≤1440).
В следующих nn строках даны записи в журнале событий в хронологическом порядке. Запись в журнале состоит из трех частей, разделенных пробелом:

  •  Время события в формате hh:mm
  •  Фамилия студента, состоящая из не более чем 20 букв латинского алфавита, первая из которых заглавная.
  •  Тип события: in, если произошел вход и out, если произошел выход.

Гарантируется, что не существует двух событий, которые происходят одновременно. Также гарантируется, что у любых двух разных студентов разные фамилии и у одного студента не бывает двух событий одного типа подряд.


Выходные данные
В первой строке выведите число нарушителей. После чего выведите фамилии нарушителей в лексикографическом порядке.
 

Ввод Вывод
6 10
01:23 Petrov in
01:24 Ivanov out
01:25 Petrov out
01:27 Ivanov in
01:32 Petrov in
01:33 Ivanov out
1
Petrov
6 10
01:23 Petrov in
01:24 Ivanov out
01:25 Petrov out
01:27 Ivanov in
01:33 Petrov in
01:34 Ivanov out
0



 

37506

Цикл while Алгоритмы обработки

Напишите программу, которая в последовательности целых чисел определяет значение наименьшего числа из всех четных введенных чисел. Программа получает на вход целые положительные числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0-признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 1000. Введенные числа не превышают 30 000.  Среди  введенных чисел есть хотя бы одно четное
Программа должна вывести одно число: наименьшее из всех четных введенных чисел

Пример работы программы

 
Входные данные
10
7
12
0
Выходные данные
10

37505

Цикл while Алгоритмы обработки

Напишите программу, которая в последовательности целых чисел определяет сумму четных чисел, принадлежащих интервалу (15,190). Программа получает на вход целые числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0-признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 1000. Введенные числа по модулю не превышают 30 000.
Программа должна вывести одно число: сумму четных чисел, принадлежащих интервалу (15,190).

Пример работы программы

 
Входные данные
5
15
25
48
180
196
0
Выходные данные
228

37504

Цикл while Алгоритмы обработки

Напишите программу, которая в последовательности целых чисел определяет сумму двузначных нечетных чисел. Программа получает на вход целые числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0-признак окончания ввода, не входит в последовательность).
Количество чисел не превышает 1000. Введенные числа по модулю не превышают 30 000.
Программа должна вывести одно число: сумму двузначных нечетных чисел.

Пример работы программы

 
Входные данные
11
15
30
9
0
Выходные данные
26

Перебор элементов матрицы

Двумерные массивы Алгоритмы обработки

Напишите программу, которая вычисляет сумму элементов матрицы.

Входные данные
В первой строке записаны через пробел размеры матрицы: количество строк N и количество столбцов M (\( 1 <= N , M <= 100 \)). В следующих N строках записаны строки матрицы, в каждой – по натуральных чисел, разделённых пробелами.

Выходные данные
Программа должна вывести одно число – сумму элементов матрицы.


Примеры
Входные данные Выходные данные
1 4 5
1 2 3 4 5
6 12 8 9 10
11 12 12 14 15
16 17 18 12 20
207

Заполнение матрицы с клавиатуры

Двумерные массивы Алгоритмы обработки

Напишите программу, которая выводит на экран транспонированную матрицу.
Транспонирование матрицы - это преобразование, в результате которого строки становятся столбцами, а столбцы – строками.

Входные данные
В первой строке записаны через пробел размеры матрицы: количество строк N и количество столбцов M (\( 1 <= N , M <= 100 \)). В следующих N строках записаны строки матрицы, в каждой – по M натуральных чисел, разделённых пробелами.

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


Примеры
Входные данные Выходные данные
1 4 5
1 2 3 4 5
6 7 8 9 3
5 4 3 2 1
7 9 8 7 6
1 6 5 7
2 7 4 9
3 8 3 8
4 9 2 7
5 3 1 6

Условное форматирование

Алгоритмы обработки Условный оператор

Недавно Петя занялся изучением Excel. Сегодня он узнал о возможности условного форматирования: для каждой непустой ячейки выбранной строки можно применить логическое выражение, при истинности которого ячейка будет окрашена в соответствующий цвет.
Петя придумал два числа a и b, а затем применил следующее условное форматирование: если число в ячейке меньше либо равно a или строго больше b, то ячейка окрашивается в красный цвет. П
о данным n ячейкам строки и числам a и b, найдите число ячеек, которые покрасятся в красный цвет.
Формат входного файла
В первой строке  находится одно натуральное число n — число непустых ячеек в строке (1 ≤ n ≤ 100). Во второй строке через пробел записаны n целых чисел ci — значения, записанные в непустых ячейках строки (1 ≤ ci ≤ 1000). В третьей строке через пробел записаны два целых числа a и b (1 ≤ a < b ≤ 1000) — придуманные Петей числа.
Формат выходного файла
Выведите одно число — число красных ячеек, после применения условного форматирования.
 

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

Шифр Цезаря

Линейные алгоритмы Алгоритмы обработки

Шифрование - это преобразование информации, делающее ее нечитаемой для посторонних. При этом доверенные лица могут провести дешифрование и прочитать исходную информацию.
Одним из самых известных алгоритмов шифрования является шифр Цезаря. Чтобы зашифровать последовательность, к каждому элементу последовательности прибавляется некоторое целое число. Так, например, из последовательности {1, 2, 3, 4} можно получить последовательность {5, 6, 7, 8} применением шифра Цезаря с ключом «+4».
Вы смогли перехватить две последовательности чисел A и B, которые оказались одинаковой длины. Нужно проверить, могла ли первая из них быть получена из второй применением шифра Цезаря.

Формат входных данных
В первой строке задано одно число n - длина последовательности (1≤n≤1000). Во второй строке находятся n целых чисел a1, a2, ..., an - последовательность A (−104 ≤ai≤104 ). В третьей строке находятся n целых чисел b1, b2, ..., bn - последовательность B (−104 ≤bi≤104 ).

Формат выходных данных
Выведите NO, если последовательность A нельзя получить из последовательности B шифром Цезаря, иначе выведите YES, а в следующей строке выведите ключ шифра с учетом знака.

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

 

Замена подстрок в строке

Строки Алгоритмы обработки

Дана строка. Замените в этой строке все цифры 1 на слово one.


Входные данные 
Вводится строка.

Выходные данные 
Выведите ответ на задачу.
 
Примеры
Входные данные Выходные данные
1 1+1=2 one+one=2

Поиск в строке

Строки Алгоритмы обработки

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

Входные данные
Вводится строка.

Выходные данные
Выведите ответ на задачу.

 

Примеры
Входные данные Выходные данные
1 In the hole in the ground there lived a hobbit In tobbit

Задача на удаление

Строки Алгоритмы обработки

Дана строка. Удалите из этой строки все символы @.

Входные данные
Вводится строка.

Выходные данные
Выведите ответ на задачу.

 

Примеры
Входные данные Выходные данные
1 Bilbo.Baggins@bagend.hobbiton.shire.me Bilbo.Bagginsbagend.hobbiton.shire.me

Бит чётности

Строки Алгоритмы обработки

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

Примеры
Входные данные Выходные данные
1 00110010 001100101

Перебор всех символов

Строки Алгоритмы обработки

Напишите программу, которая в строке заменяет все точки на нули и все заглавные английские буквы "X" на единицы. 
 

Примеры
Входные данные Выходные данные
1 ..X..XX 0010011

Гистограмма

Сортировка подсчетом Алгоритмы обработки Строки

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

Входные данные
Входной файл содержит зашифрованный текст сообщения. Он содержит строчные и прописные латинские буквы, цифры, знаки препинания («.», «!», «?», «:», «-», «,», «;», «(», «)»), пробелы и переводы строк. Размер входного файла не превышает 104 байт. Текст содержит хотя бы один непробельный символ. Все строки входного файла не длиннее 200 символов.

Выходные данные
Для каждого символа c кроме пробелов и переводов строк выведите столбик из символов «#», количество которых должно быть равно количеству символов c в данном тексте. Под каждым столбиком напишите символ, соответствующий ему. Отформатируйте гистограмму так, чтобы нижние концы столбиков были на одной строке, первая строка и первый столбец были непустыми. Не отделяйте столбики друг от друга. Отсортируйте столбики в порядке увеличения кодов символов.

Пример
Входные данные Выходные данные
Hello, world!
     #   
     ##  
#########
!,Hdelorw
Twas brillig, and the slithy toves
Did gyre and gimble in the wabe;
All mimsy were the borogoves,
And the mome raths outgrabe.
         #              
         #              
         #              
         #              
         #              
         #         #    
         #  #      #    
      #  # ###  ####    
      ## ###### ####    
      ##############    
      ##############  ##
#  #  ############## ###
########################
,.;ADTabdeghilmnorstuvwy

Номер максимального - 4

Алгоритмы обработки Цикл for Одномерные массивы

Даны натуральное число n и целые числа a1, a2, ..., an. Найти номер минимального четного числа. Если чисел с минимальным четным значением несколько, то должен быть найден номер первого из них. 

Входные данные: в первой строке вводится число N - количество чисел в последовательности (0<N<100), а затем N целых чисел.
Выходные данные: выведите ответ на задачу

Примеры

Входные данные Выходные данные
1 7
4
9
6
-3
-4
8
-2
5
 
 

* Две самые большие цифры

Алгоритмы обработки Строки Одномерные массивы

Дано натуральное число N (\(N<=10^9\)). Определить две самые большие цифры числа. 

Входные данные 
На вход подается одно число (число содержит как минимум 2 различные цифры).

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

 

Примеры
Входные данные Выходные данные
1 45545 5 4
2 1113 3 1

Обработка вводимых чисел - 13

Алгоритмы обработки Цикл for Остатки

Дана последовательность целых чисел. Найти в ней минимальное число, не кратное 3. В последовательности имеется как минимум одно число не кратное 3

Входные данные: В первой строке вводится число N - количество чисел в последовательности, а затем N целых чисел, по одному в строке.
Выходные данные: Выведите ответ на задачу

Примеры

Входные данные Выходные данные
1 7
4
6
5
-3
-4
3
-2
-4
 
 

Обработка вводимых чисел - 12

Алгоритмы обработки Цикл for Остатки

Дана последовательность целых чисел. Найти в ней минимальное число, кратное 3. В последовательности имеется как минимум одно число кратное 3

Входные данные: В первой строке вводится число N - количество чисел в последовательности (N - положительное число, не превышающее 100) , а затем N целых чисел, по одному в строке (каждое число не превышает по модулю 1000).
Выходные данные: Выведите ответ на задачу

Примеры

Входные данные Выходные данные
1 7
4
6
5
-3
-4
3
-2
-3
 
 

Обработка вводимых чисел - 10

Алгоритмы обработки Цикл for Остатки

Дана последовательность целых чисел. Найти в ней максимальное число, кратное 3. В последовательности имеется как минимум одно число кратное 3

Входные данные: В первой строке вводится число N - количество чисел в последовательности, а затем N целых чисел, по одному в строке.
Выходные данные: Выведите ответ на задачу

Примеры

Входные данные Выходные данные
1 7
4
6
5
-3
-4
3
-2
6
 
 

Обработка потока данных - 2

Цикл while Алгоритмы обработки Цикл for

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

Входные данные 
На вход поступают числа последовательности, по одному числу в строке. Ноль - признак окончания ввода.

Выходные данные 
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 3
5
3
4
7
0
3

Обрабатываем цифры числа - 1

Цикл for Алгоритмы обработки

Дано натуральное число N. Определить количество его цифр, кратных z

Входные данные 
Вводятся два числа через пробел, сначала натуральное число N, затем - z (\(0< z <=9\)).

Выходные данные 
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 432 2 2

Обработка вводимых чисел - 10

Алгоритмы обработки Одномерные массивы

Дана последовательность чисел. Выяснить, сколько раз в ней встречается минимальное число

Входные данные: Вводится сначала число N - количество членов последовательности, а затем N чисел - члены последовательности
Выходные данные: Выведите ответ на задачу

Примеры:
Входные данные
7
2
4
2
5
2
5
3

Выходные данные
3

Обработка вводимых чисел - 7

Алгоритмы обработки Цикл for Одномерные массивы

Дана последовательность целых чисел. Найти в ней наименьшее нечетное число. В последовательности имеется как минимум одно нечетное число

Входные данные: В первой строке вводится число N - количество чисел в последовательности, а затем N целых чисел, по одному в строке.
Выходные данные: Выведите ответ на задачу

Примеры

Входные данные Выходные данные
1 7
4
2
5
-1
-4
6
-2
-1

Казино волшебников

Цикл for Алгоритмы обработки

В мире волшебников серебряный сикль равняется 29 бронзовым кнатам, а 17 сиклей равны 1 золотому галеону. В мире маглов галеон равен примерно 5 фунтам. Однако курс обмена может меняться.

Рон старался учить заклинания, но не всегда у него получалось то, что он хотел. Недавно он нашел новую игру «Казино волшебников». В этом казино играют на виртуальные сикли, а каждый раунд игры состоит в применении того или иного заклинания. Перед началом игры у Рона ноль сиклей на счету, но программа в любой момент предоставляет ему неограниченный кредит.

Перед началом каждого раунда программа сообщает, на какую тему будет очередное волшебное задание и Рон делает ставку на то, что он справится с заданием. В самом начале игры Рон всегда делает ставку в 1 сикль. Если Рон выполняет задание правильно, то он выигрывает раунд и ставка плюсуется к его счету. Если у него ничего не получилось, то он проигрывает, и ставка вычитается из его счета. Рон очень азартный, поэтому после проигрыша всегда увеличивает ставку в 2 раза. Однако после выигрыша, дабы не вспугнуть удачу, Рон всегда снижает ставку до 1 сикля. Наконец, одолев очередное задание, и выиграв этот раунд, Рон решает закончить игру.

Например, пусть Рон правильно выполнил первое задание (выиграл начальную ставку в 1 сикль, поставил на следующий раунд 1 сикль), затем не выполнил второе задание (проиграл 1 сикль и удвоил ставку), не справился с третьим заданием (проиграл 2 сикля и снова удвоил ставку), но четвертое задание ему все-таки удалось выполнить (выиграл 4 сикля, сбросил ставку на 1 сикль). Затем он правильно выполняет и пятое задание (выиграл 1 сикль) и заканчивает игру. Итого на его счету после игры: 1 – 1 – 2 + 4 + 1 = 3 сикля.

Требуется написать программу, которая по имеющейся записи хронологии игры определяет, какое количество сиклей выиграл или проиграл Рон.

Входные данные
Первая строка содержит целое число N (\(0 < N <= 2000\)) — количество заданий, которое выполнил Рон. В следующих N строках располагаются числа 0 или 1 (по одному числу в строке): 1, если Рон выполнил очередное задание, и 0 – если не выполнил

Выходные данные
Выведите одно целое число — выигрыш или проигрыш Рона (выигрыш определяется положительным числом, а проигрыш – отрицательным).
 

 

Примеры
Входные данные Выходные данные
1 5
1
1
0
1
1
4

Максимум и минимум

Цикл while Алгоритмы обработки

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

Входные данные 
На вход подаются целые числа (по одному числу в строке).

Выходные данные 
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 -1
-2
1
7
2
0
2

Максимальная сумма делителей

Вложенные циклы Алгоритмы обработки

Дано число n. Найдите число из диапазона от 1 до n с максимальной суммой своих делителей (включая непростые делители, 1 и само число). Если таких чисел несколько, выведите минимальное из них.

Входные данные: На вход программе подается натуральное n<=2500.
Выходные данные: Выведите искомое число.

Примеры
Входные данные Выходные данные
1 5 4
2 12 12

Сумма чисел в массиве

Алгоритмы обработки Динамическое программирование: один параметр

Дан массив произвольных целых чисел. Напишите программу, которая за один проход по массиву находит непрерывный кусок, сумма чисел в котором максимальна.
Примечание. Фактически требуется найти такие i и j (i<=j), что сумма всех элементов массива от ai до aj включительно будет максимальна. Индексация элементов начинается с 1.

Входные данные
В первой строке задается натуральное число n <= 100000 — количество элементов в массиве. В следующих n строках задаются сами элементы массива — целые числа, по модулю не превосходящие 30 000.

Выходные данные
Выведите пару искомых значений индексов. Если таких пар несколько, то j должно быть минимально возможным, а при равных j значение i должно быть максимально возможным. В первой строке выведите i, во второй - j.
 

Примеры
Входные данные Выходные данные
1 5
-1
2
3
-2
2
2
3
2 7
2
-2
3
-1
5
-2
7
3
7

Выбрать числа Фибоначчи

Алгоритмы обработки Арифметические алгоритмы (Теория чисел)

Дан массив чисел. Необходимо записать в другой массив, все числа Фибоначчи исходного массива. Если в исходном массиве нет чисел Фибоначчи, программа должна вывести число 0.

Входные данные
Первая строка содержит размер массива N. Во второй строке через пробел задаются N чисел – элементы массива (целые неотрицательные числа, не превышающие 1000). Гарантируется, что 0 < N ≤ 10000.

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

Примеры
Входные данные Выходные данные
1 6
4 14 5 8 12 13
5 8 13

Выбрать простые

Алгоритмы обработки Простые числа и разложение на множители

Дан массив чисел. Необходимо записать в другой массив все простые числа исходного массива. Если в исходном массиве нет простых чисел, программа должна вывести число 0.

Входные данные
Первая строка содержит размер массива N. Во второй строке через пробел задаются N натуральных чисел – элементы массива (все числа не превышают 1000). Гарантируется, что 0 < N ≤ 10000.

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

Примеры
Входные данные Выходные данные
1 6
1 2 3 4 5 6
2 3 5

Выбрать повторяющиеся

Алгоритмы обработки Словари Одномерные массивы

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

Входные данные
Первая строка содержит размер массива N. Во второй строке через пробел задаются N чисел – элементы массива ai (-109<=ai<=109). Гарантируется, что 0 < N <= 10000.

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

Примеры
Входные данные Выходные данные
1 6
4 1 2 1 2 3
1 2

Самая длинная цепочка

Алгоритмы обработки Одномерные массивы

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

Входные данные
Первая строка содержит размер массива N. Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 3 < N ≤ 10000.

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

Примеры
Входные данные Выходные данные
1 7
1 2 2 1 1 1 3
1 3

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

Алгоритмы обработки

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

Входные данные
Вводится набор чисел. Все числа находятся на одной строке. Количество чисел не более 100.

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

Пример
Входные данные Выходные данные
1 1 2 3 4 5 5 4 3 2 1

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

Алгоритмы обработки Одномерные массивы

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

Входные данные
Вводится список чисел. Все числа списка находятся на одной строке. Количество чисел не больше 1000. Каждое число по модулю меньше 2*109.

Выходные данные
Выведите ответ на задачу.
 

Примеры
Входные данные Выходные данные
1 1 2 2 3 3 3 3
 
Примечание
Для считывания данных на языке С++ используйте цикл
while(cin >> a)
{
  // работа с числом a
}
Считать данные на языке Python можно сразу в массив
A = list(map(int, input().split()))

Шеренга

Алгоритмы обработки Одномерные массивы

Петя перешёл в другую школу. На уроке физкультуры дети строятся по росту, начиная с самого высокого. Напишите программу, которая поможет Пете определить свое место в строю.

Входные данные
Программа получает на вход невозрастающую последовательность натуральных чисел, означающих рост каждого учащегося в строю. После этого вводится число x – рост Пети. Все числа во входных данных натуральные и не превышают 200. Количество чисел в последовательности не превышает 200.

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

Примеры
Входные данные Выходные данные
1 165 163 160 160 157 157 155 154 
162
3
2 165 163 160 160 157 157 155 154 
160
5
 
Примечание
Для считывания данных на языке С++ используйте цикл
while(cin >> a)
{
  // работа с числом a
}
Обратите внимание, на языке С++ такой способ считывания считает сразу все данные из входного потока, включая последнюю строку.

Считать данные на языке Python можно сразу в массив
A = list(map(int, input().split()))

*Третий максимальный

Использование сортировки Алгоритмы обработки

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

Входные данные
В первой строке задается число N (\(3<=N<=10^5\)). Далее идут N строк, по одному числу в каждой строке.

Выходные данные
Выведите третий максимальный элемент.
 

 

Примеры
Входные данные Выходные данные
1 7
10
15
35
35
14
35
10
35
2 5
10
5
7
11
9
9
 
 

Гарри Поттер. Начало

Цикл for Алгоритмы обработки

В 1995 году Роулинг закончила свою рукопись романа «Гарри Поттер и философский камень», которую печатала на старой пишущей машинке. После восторженного отзыва Брайони Ивенса, читателя, которому было предложено оценить первые три главы книги, фулхэмская фирма литературных агентов Christopher Little Literary Agents согласилась представлять Роулинг во время поисков издателя. Книга была отправлена в двенадцать издательств, но все они отвергли рукопись. Год спустя она, наконец, получила зелёный свет (и 1500 фунтов аванса) от редактора Барри Каннингема из лондонского издательства Bloomsbury.
Дж. Роулинг во время поисков издателей получила N предложений напечатать роман. Помогите ей оценить, сколько всего издательств предложило ей максимальный гонорар.

Входные данные
В первой строке задается число N. В следующих N строках записаны натуральные числа (не более 5000 каждое),  по одному числу в строке.

Выходные данные
Выведите одно  число - количество издательств с максимальным размером гонорара.
 

 

Примеры
Входные данные Выходные данные
1 4
1547
1600
1325
1600
2

Замечательные числа 4

Цикл for Алгоритмы обработки

Дано натуральное число n. Выведите в порядке возрастания все трехзначные числа, сумма цифр которых равна n.

Входные данные: Вводится натуральное число n.
Выходные данные: Выведите ответ на задачу.

Примеры
Входные данные Выходные данные
1 3 102
111
120
201
210
300

Сортировка по сумме цифр

Использование сортировки Алгоритмы обработки Одномерные массивы

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

Входные данные
Первая строка содержит размер массива N . Во второй строке через пробел задаются N чисел – элементы массива. Гарантируется, что 0 < N ≤ 10000 .

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

Ввод Вывод
6
9 21 32 55 81 11
55 9 81 32 21 11

Элементы, которые больше соседних

Алгоритмы обработки Одномерные массивы

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


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

Пара соседних элементов с одинаковыми знаками

Алгоритмы обработки Одномерные массивы

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


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

Выходные данные
Необходимо вывести слово YES, если существует пара соседних элементов с одинаковыми знаками. В противном случае следует вывести слово NO.
 
Примеры
Входные данные Выходные данные
1 5
1 -3 4 -2 1
NO
 

Количество элементов, больших предыдущего

Алгоритмы обработки Одномерные массивы

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

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

Выходные данные
Необходимо вывести единственное число - количество элементов массива, больших предыдущего.
 
Примеры
Входные данные Выходные данные
1 5
1 2 3 4 5
4
 

Вставка элемента в вектор

Алгоритмы обработки Одномерные массивы

Дан массив из N положительных элементов, больших 1 (2<=N<=100). Вставить значение a перед всеми элементами, кратными а
 
Формат входных данных
На входе подаются в первой строке N - число элементов массива
Вторая строка содержит число a 
Третья строка содержит N чисел - значения элементов массива
Все числа положительные не больше 100.
 
Формат выходных данных
Выведите результирующий массив в строку
 
 

Зл 9.34

Строки Алгоритмы обработки

Из слова stroka путем замены его букв получить слово strofa

Пример входных и выходных данных

№ теста Входные данные Выходные данные
1 stroka strofa

Зл 9.33

Строки Алгоритмы обработки

Из слова probel путем замены его букв получить слово prodel

Пример входных и выходных данных

№ теста Входные данные Выходные данные
1 probel prodel

Зл 9.32

Строки Алгоритмы обработки

Из слова kursor путем замены его букв получить слово tancor

Пример входных и выходных данных

№ теста Входные данные Выходные данные
1 kursor tancor

Зл 9.30

Строки Алгоритмы обработки

Дано слово апельсин. Путем "вырезок" и "склеек" его букв получить слова спаниель. 

Пример входных и выходных данных

№ теста Входные данные Выходные данные
1 апельсин спаниель

Зл 9.27

Строки Алгоритмы обработки

Дано слово программа. Путем "вырезок" и "склеек" его букв получить слова ром и рампа. 
Результирующие слова выводить в столбик.

Пример входных и выходных данных

№ теста Входные данные Выходные данные
1 программа ром
рампа

BalloonsBOOM

Алгоритмы обработки Одномерные массивы

Любимая компьютерная игра Васи называется “Overtouched”. В начале игры на
экране появляются несколько рядов с разноцветными шариками. Игрок нажимает на любой шарик, после чего все шарики такого же цвета удаляются. После удаления все оставшиеся шарики сдвигаются влево так, чтобы в ряду между соседними шариками не оставалось пустых мест, порядок шариков в ряду при этом не изменяется. 
Нужно вывести все оставшиеся шарики.

Формат входных данных:
Вводятся числа n и m (0 <n,m < 1^9999999999 + 11) – количество строк и шариков в каждой строке соответственно. Затем вводится цвет каждого шарика. В следующей строке вводится цвет шариков k, которые нужно удалить.

Формат выходных данных:
Выводятся оставшиеся шарики после удаления.
 
Ввод Вывод
4 3
1 2 3
4 2 2
1 7 6
2 2 2
2
1 3
4
1 7 6
(с) Кабицкий А., 2018г.

Инопланетный геном

Хеш Алгоритмы обработки Строки

Геном жителей системы Тау Кита содержит 26 видов оснований, для обозначения которых будем использовать буквы латинского алфавита от A до Z, а сам геном записывается
строкой из латинских букв. Важную роль в геноме играют пары соседних оснований, например, в геноме «ABBACAB» можно выделить следующие пары оснований: AB, BB, BA,
AC, CA, AB. 
Степенью близости одного генома другому геному называется количество пар соседних оснований первого генома, которые встречаются во втором геноме.
Вам даны два генома, определите степень близости первого генома второму геному.

Программа получает на вход две строки, состоящие из заглавных латинских букв. Каждая строка непустая, и её длина не превосходит 105.

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

Ввод Вывод Примечание
ABBACAB
BCABB
4
Следующие пары оснований первого генома встречаются
во втором геноме: AB, BB, CA, AB. Обратите внимание на то,
что пара AB в первом геноме встречается два раза, поэтому
и подсчитана в ответе два раза.

Максимальное среди четных чисел

Цикл while Алгоритмы обработки

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

Входные данные
На вход программе подаются числа, по одному числу в строке.

Выходные данные
Выведите ответ на задачу
 

 

Примеры
Входные данные Выходные данные
1 1
2
6
0
6

 

Количество двузначных чисел, удовлетворяющих условию

Цикл while Алгоритмы обработки

На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём (ноль не входит в последовательность). Определить, сколько получено двузначных чисел, которые заканчиваются на 3.

Входные данные
На вход программе подаются числа, по одному числу в строке.

Выходные данные
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 1
2
13
0
1

 

Количество чисел, удовлетворяющих условию

Цикл while Алгоритмы обработки

На вход программы поступает неизвестное количество целых чисел, ввод заканчивается нулём (ноль не входит в последовательность). Определить, сколько получено чисел, которые делятся на 3.

Входные данные
На вход программе подаются числа, по одному числу в строке.

Выходные данные
Выведите ответ на задачу.
 

 

Примеры
Входные данные Выходные данные
1 1
2
3
0
1

 

Плацкартный вагон

Алгоритмы обработки реализация

В плацкартном вагоне 54 места, пронумерованных числами от 1 до 54. Вагон разбит на 9 купе. Первые 36 мест расположены по левую сторону от прохода, места 1–4 находятся в первом купе, места 5–8 – во втором и т. д. В девятом купе находятся места с номерами 33– 36. По правую сторону от прохода находятся боковые места, их номера от 37 до 54, причём они нумеруются в противоположном направлении: места 37 и 38 находятся напротив девятого купе, а места 53 и 54 – напротив первого. Ниже приведена схема всех мест в вагоне.


Группа школьников едет на олимпиаду и будет всю дорогу крутить спиннеры. 
Поэтому им нужно купить места в нескольких подряд идущих купе вместе с прилегающими боковыми местами. Даны номера свободных мест в поезде. Определите, какое наибольшее число подряд идущих купе полностью свободны. 
 
Программа получает на вход число N – количество свободных мест в вагоне (0 ≤ N ≤ 54). Следующие N строк содержат номера свободных мест – различные числа от 1 до 54 в произвольном порядке, по одному числу в строке. 
Программа должна вывести одно целое число – максимальное число подряд идущих свободных купе (купе – 4 места слева от прохода и 2 боковых места) в этом вагоне.

Ввод Вывод Примечание
12
5
6
3
4
8
7
51
9
10
54
49
52
1 Свободно одно купе с местами 5, 6, 7, 8, 51, 52.
1
1
0
В вагоне только одно свободное место, поэтому
свободных купе нет совсем.

Списки: алфавитно-частотный словарь

Словари Использование сортировки Алгоритмы обработки

Дан текст, состоящий из нескольких строк. Текст заканчивается строкой, содержащей единственное слово "END!". Слово "END!" не является содержимым текста, а служит только признаком окончания.

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

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

Пример
Входные данные Выходные данные
1 Duis aute irure dolor in reprehenderit in voluptate.
Velit esse cillum dolore eu fugiat nulla pariatur.
END!
in 2
aute 1
cillum 1
dolor 1
dolore 1
duis 1
esse 1
eu 1
fugiat 1
irure 1
nulla 1
pariatur 1
reprehenderit 1
velit 1
voluptate 1

Палиндром

Использование сортировки Алгоритмы обработки

Палиндром - это строка, которая читается одинаково как справа налево, так и слева направо. 
 
На вход программы поступает набор больших латинских букв (не обязательно различных). Разрешается переставлять буквы, а также удалять некоторые буквы. Требуется из данных букв по указанным правилам составить палиндром наибольшей длины, а если таких палиндромов несколько, то выбрать первый из них в алфавитном порядке.
 
Входные данные
В первой строке входных данных содержится число N (1 <= N <= 100000). Во второй строке задается последовательность из N больших латинских букв (буквы записаны без пробелов).
 
Выходные данные
В единственной строке выходных данных выдайте искомый палиндром.
 
Ввод Вывод
3
AAB
ABA
6
QAZQAZ
AQZZQA
6
ABCDEF
A

Пересечение множеств

Пересечение множеств Множества Алгоритмы обработки

Даны два неупорядоченных набора целых чисел (может быть, с повторениями). Выдать без повторений в порядке возрастания все те числа, которые встречаются в обоих наборах.
 
Входные данные
В первой строке входного потока записано через пробел два целых числа N и М (1 ≤ N, М ≤ 300 000) — количество элементов первого и второго наборов, соответственно. В следующих двух строках записано сначала N чисел первого набора, а затем M чисел второго набора. Числа разделены пробелами. Каждое из этих чисел попадает в промежуток от 0 до 105.
 
Выходные данные
Необходимо вывести в возрастающем порядке без повторений все числа, которые входят как в первый, так и во второй набор. Числа разделять одним пробелом. Если таких чисел нет, то ничего выводить не нужно.
 
Входные данные Выходные данные
11 6
2 4 6 8 10 12 10 8 6 4 2
3 6 9 12 15 18
6 12

Самый младший

Алгоритмы обработки Одномерные массивы Линейный поиск

В некотором списке записана информация о годе рождения каждого из N человек. Определить наибольший порядковый номер самого младшего по возрасту человека (считая с 1). 

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

Выходные данные
Выведите наибольший номер самого младшего человека.
 

Пример
Входные данные Выходные данные
1 5
1904 1903 1905 1905 1903
4

Спортсмен-победитель

Алгоритмы обработки Одномерные массивы

Имеется информация о времени (в секундах) прохождения трассы 25 спортсменов, участвовавших в лыжной гонке. Выведите результат спортсмена-победителя гонки.

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

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

Пример
Входные данные Выходные данные
1 78 35 79 47 104 53 58 86 108 94 90 27 33 88 17 15 37 98 14 67 76 45 94 97 46  14

Обратная перестановка

Перестановки Алгоритмы обработки

По данной перестановке π требуется найти π-1.

Входные данные

В первой строке  входных данных содержится число 0 < N <= 20000 – количество элементов в перестановке π. Во второй строке записана сама перестановка π.

Выходные данные

Выведите π-1

 

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

Разбор:
Вводим N и заводим массив от 1-го до N. Теперь начинаем считывать данную перестановку - хранить ее не обязательно, поэтому разумно будет вводить каждый элемент в одну и ту же переменную. Вводя i-й элемент кладем его порядковый номер (i) в ячейку массива с номером, равному этому числу, т.е. для каждого элемента данной перестановки сохраняем его место в этой перестановке. Теперь выводим полученный массив.

Алгоритм

Алгоритмы обработки Линейные алгоритмы

Реализуйте на одном из языков программирования алгоритм, представленный на схеме.
В первой строке ввода содержатся целое число N (1 ≤ N ≤ 100). Далее следует N строк, содержащих по одному целому числу в диапазоне от −1000 до 1000.
Вывести одно целое число – значение M после завершения работы алгоритма.



Ввод Вывод
4
2
3
-7
4
5

Хакер Василий

Алгоритмы обработки Одномерные массивы

Хакер Василий получил доступ к классному журналу и хочет заменить все свои минимальные оценки на максимальные. Напишите программу, которая заменяет оценки Василия, но наоборот (все максимальные - на минимальные).
 
Входные данные
Дано количество оценок Василия (не больше 100), затем сами оценки.
 
Выходные данные
Требуется вывести исправленные оценки в том же порядке.

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

Легкая, вариант-2

Алгоритмы обработки реализация

Вы занимаетесь разработкой системы по продаже билетов на поезда. Несмотря на то, что поезда ходят по множеству различных маршрутов, вы будете работать только с одним из них. Маршрут рассматриваемого поезда состоит из n остановок: маршрут начинается в первой из них, а заканчивается в n-й, соответственно. Всего в поезде имеется m мест для пассажиров.

Эта система будет использоваться для продажи билетов пассажирам. При покупке билета пассажир указывает номер станции L, на которой он хочет сесть на поезд и номер станции R, на которой он хочет сойти с поезда. Если у одного пассажира есть билет до станции S, а другой хочет купить билет от станции S, то они друг другу не мешают: второй может занимать только что освободившееся место первого. Система должна сообщить пассажиру следующую информацию:

  • f, где f  число свободных мест мест между L-й и R-й станциями, если хотя бы одно такое место есть. В этом случае пассажир покупает один билет с L-й по R-ю станцию.
  • 0 если подходящих свободных мест нет. В этом случае пассажир билет не покупает.

Входные данные

В первой  находятся натуральные числа n (2 ≤ n ≤ 100), m (1 ≤ m ≤ 100) и k (1 ≤ k ≤ 100) — число станций в маршруте поезда, максимальное число пассажиров в поезде и число обращений обращений пассажиров к системе покупки билетов.

Следующие k строк содержат по два натуральных числа Li и Ri (1 ≤ Li < Ri ≤ n)  — начальная и конечная станции в i-м обращении к системе.

Выходные данные

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

Пример входных и выходных данных

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

Легкая, вариант-1

Алгоритмы обработки Задачи на моделирование

Вы занимаетесь разработкой системы по продаже билетов на поезда. Несмотря на то, что поезда ходят по множеству различных маршрутов, вы будете работать только с одним из них. Маршрут рассматриваемого поезда состоит из n остановок: маршрут начинается в первой из них, а заканчивается в n-й, соответственно. Всего в поезде имеется m мест для пассажиров.

Эта система будет использоваться для продажи билетов пассажирам. При покупке билета пассажир указывает номер станции L, на которой он хочет сесть на поезд и номер станции R, на которой он хочет сойти с поезда. Если у одного пассажира есть билет до станции S, а другой хочет купить билет от станции S, то они друг другу не мешают: второй может занимать только что освободившееся место первого. Система должна сообщить пассажиру следующую информацию:

  • «YES», если в поезде есть свободные места. В этом случае пассажир покупает один билет с L-й по R-ю станцию.
  • «NO», если подходящих свободных мест нет. В этом случае пассажир билет не покупает.

 

Входные данные

В первой строке находятся натуральные числа n (2 ≤ n ≤ 100), m (1 ≤ m ≤ 100) и k (1 ≤ k ≤ 100) — число станций в маршруте поезда, максимальное число пассажиров в поезде и число обращений обращений пассажиров к системе покупки билетов.

Следующие k строк содержат по два натуральных числа Li и Ri (1 ≤ Li < Ri ≤ n)  — начальная и конечная станции в i-м обращении к системе.

Выходные данные

Для каждого обращения к системе в своей строке выведите её ответ: YES или NO.

Пример входных и выходных данных

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

 

Что произошло позже?

Структуры Алгоритмы обработки

Даны даты N событий, произошедших после 1930 года: Название, год, номер месяца и число. Составить программу, организующую ввод информации в структуру и сравнивающую два любых события по времени. Необходимо вывести название события, которое произошло позже.

Входные данные
В первой строке вводится число N - количество событий (\(1<=N<=100\)). Далее идут N записей в формате (через пробел):
<Событие> <день события> <месяц> <год>.
Далее идет строка с указанием названий двух событий, которые необходимо сравнить:
<событие1> <событие2>.

Событие - одно слово, день события - число от 1 до 31, месяц  - число от 1 до 12,  год - число от 1937 до 2016.

Выходные данные
Выведите название события, которое произошло позже и его дату в формате:
<событие> <день события> <Месяц> <Год>.
Если два события произошли в один день, то выведите их названия через пробел (без указания даты):
<событие1> <событие2>. 
 

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

Златопольский 13.19

Алгоритмы обработки Одномерные массивы

Известна информация об N (0<N<=20) учениках класса: фамилия, имя, отчество  и дата рождения (день, месяц, год)
Определить структуру, описывающую информацию об учениках класса.
Вывести количество учеников в классе, у которых сегодня день рождения и их количество

Входные данные: 
В первой строке вводится число N - количество записей
Далее идут N записей в формате (через пробел): <Фамилия-слово без пробела> <Имя-слово без пробела> <Отчество-слово без пробела> <день рождения - число от 1 до 31> <Месяц рождения - число от 1 до 12> <Год рождения-число>
Далее идет строка с сегодняшней датой в формате  <день - число от 1 до 31> <Месяц - число от 1 до 12> <Год -число>

Выходные данные:
Необходимо вывести на экране в столбик информацию об учениках, у которых сегоня день рождения.
Формат вывода 
 <Фамилия-слово без пробела> <Имя-слово без пробела> <Отчество-слово без пробела>
Фамилии выводить в порядке следования исходных данных
Далее после списка учеников вывести одно число - количество учеников

Златопольский 13.12

Алгоритмы обработки Одномерные массивы

Известна информация об N (0<N<=100) сотрудниках фирмы: фамилия, имя, отчество, адрес и дата поступления на работу (месяц, год)
Написать программу, организующую ввод исходных данных в структуру и вывести на экран фамилию, имя и адрес сотрудников, которые на сегодняшний день проработали в фирме не менее Z лет

Входные данные: 
В первой строке вводится число N - количество записей
Далее идут N записей в формате (через пробел): <Фамилия-слово без пробела> <Имя-слово без пробела> <Отчество-слово без пробела> <Адрес-слово без пробела> <Месяц поступления - число от 1 до 12> <Год поступления-число>
Далее идет строка с сегодняшней датой в формате  <Месяц - число от 1 до 12> <Год -число>
Далее идет значение Z (0<Z<=10) - количество проработанных лет

Выходные данные:
Необходимо вывести на экране в столбик информацию о сотрудниках, проработавших в фирме не менее Z лет.
Формат вывода 
 <Фамилия-слово без пробела> <Имя-слово без пробела> <Отчество-слово без пробела> <Адрес-слово без пробела> 
Фамилии выводить в порядке следования исходных данных

Златопольский 13.6

Алгоритмы обработки Одномерные массивы Использование сортировки

Известны максимальные скорости 20-ти моделей автомобилей. Все значения выражены в км/ч.
Написать программу, которая организовывает ввод исходных данных в структуру и выводит названия моделей автомобилей с самой маленькой и самой большой максимальной скоростью

Входные данные: 
20 строк в формате <Марка автомобиля> <Максимальная скорость>


Выходные данные:
Необходимо вывести через пробел названия двух моделей автомобилей, сначала автомобиль с наибольшей максимальной скоростью, затем через пробел автомобиль с наименьшей максимальной скоростью

Златопольский 13.3

Алгоритмы обработки Одномерные массивы

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

Входные данные: 
в первой строке задается название страны
далее идут 26 строк в формате <Страна> <Город>


Выходные данные:
Необходимо вывести все города, которые находятся в стране, указанной в первой строке входных данных.
Каждый город выводить с новой строки
Сразу после списка городов вывести их количество (одно целое число)

Разбор URL на части

Строки Алгоритмы обработки

Дана строка, представляющая собой адрес URL. Части URL разделяются знаком / или //
Необходимо разобрать строку URL на части и вывести каждую часть с новой строки.

Входные данные
 
В первой строке задается URL адрес. В начале и в конце строки лишних пробелов нет.

Выходные данные
Необходимо вывести каждую часть URL адреса с новой строки.
 

Примеры
Входные данные Выходные данные
1 C:/Photo/2013/Pokhod/vasya.jpg C:
Photo
2013
Pokhod
vasya.jpg
2 http://chelyabinsk.74.ru/text/newsline/258041618673664.html http:
chelyabinsk.74.ru
text
newsline
258041618673664.html

 

Самое длинное слово

Строки Алгоритмы обработки

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


Входные данные: в первой строке задается предложение.

Выходные данные: необходимо вывести самое длинное слово и количество символов в нем. Если таких слов несколько, то вывести первое из них.
 

Примеры
Входные данные Выходные данные
1 Vasja      poshel           guljat poshel 6

Желание для Герцога Циклонского

Алгоритмы обработки Задачи на моделирование

Герцог Циклонский, обладая безграничным могуществом, что отражено в его девизе "Все могу!", ежегодно проводит конкурс среди приглашенных на исполнение самого заветного желания.
Отбор проводится следующим образом: все претенденты рассаживаются на пронумерованных стульях (нумерация стульев начинается с 1) вокруг Большого Круглого стола, после чего посредством Константы счета начинается отсчет по часовой стрелке.
Претендент, на которого падает Константы счета, обязан освободить место, отсчет продолжается до тех пор, пока не останется два человека. 
Требуется при известном числе гостей N и Константы счета С определить номера стульев, которые нужно занять, чтобы попасть в число этих двух "счастливчиков".

Входные данные
В первой строке вводится число N (\(1<=N<=100\))  - количество приглашенных претендентов. Во второй строке вводится Константы счета (\(С<=100\)).

Выходные данные
Необходимо вывести через пробел два числа - номера стульев "счастливчиков".
 

Примеры
Входные данные Выходные данные
1 5
3
2 4

Заседание толстяков

Одномерные массивы Алгоритмы обработки

На пронумерованных N стульях за круглым столом в зале заседаний сидят толстяки, вес каждого известен. Каждый час они пересаживаются по кругу вправо на один стул. Напишите программу, которая определяет какой из толстяков будет сидеть на каждом стуле через R часов. 

Входные данные
В первой строке вводится значение N - натуральное число (\(N<=100\)). Во второй строке, вводится N чисел - вес толстяков (от 90 до 150). В третьей строке вводится натуральное число R (\(0<=R<=100\)).

Выходные данные
Вывести в первой строке исходное положение толстяков (их вес, начиная с сидящего на первом стуле):
before: вес толстяков 
Во второй строке вывести положение толстяков через R часов:
after: вес толстяков 
 

Примеры
Входные данные Выходные данные
1
5
98 127 139 141 107 
3
before: 98 127 139 141 107 
after: 139 141 107 98 127 

*Удаление пробелов

Строки Алгоритмы обработки

На вход подается одна строка текста (не больше 255 символов).
Нужно вывести эту же строку, удалив все парные пробелы (то есть, если где-то в строке идет подряд 2 или более пробелов, то в этом месте нужно оставить только один из них).
 
Примеры
Входные данные Выходные данные
1    My    name is    Vasya...  My name is Vasya...

Список

Алгоритмы обработки Одномерные массивы

В фирме, выпускающей компьютерные комплектующие, все изделия получают последовательные номера от 1 до N. Каждое изделие после его изготовления поступает в отдел контроля качества, где оно проверяется, и либо уходит в продажу, либо заносится в список бракованных изделий и списывается. К сожалению, список бракованных изделий иногда оказывается чересчур длинным. Тогда для его сокращения подряд идущие числа заменяются интервалом: через тире указываются номера первого и последнего изделия интервала.
Например, вместо 
1,3,4,5,6,7,8,10,12,16,17,20,21,22,23,24
записывается
1,3-8,10,12,16-17,20-24
 
Напишите программу, которая по полному списку номеров бракованных изделий выдаст этот список в сокращенном виде.
 
Входные данные
В первой строке вводится сначала число N - общее количество изделий, затем число M - количество изделий, оказавшихся бракованными. Во второй строке вводятся в возрастающем порядке номера бракованных изделий. 
 
Выходные данные
Выведите в одной строке список номеров бракованных изделий в сокращенном виде. Интервалы должны разделяться запятой. В строке не должно быть пробелов.
 
Ограничения
1<=M<=N<=1000000.
 
Примеры
Входные данные Выходные данные
1
10 5 
1 3 5 7 9
1,3,5,7,9
2
40 16
1 3 4 5 6 7 8 10 12 16 17 20 21 22 23 24
1,3-8,10,12,16-17,20-24
3
11 11
1 2 3 4 5 6 7 8 9 10 11
1-11
4
10000 1 
5
5

Два массива

Алгоритмы обработки Одномерные массивы

Даны два массива чисел. Требуется вывести те элементы первого массива (в том порядке, в каком они идут в первом массиве), которых нет во втором массиве.
 
Входные данные
В первой строке ввода записано число N - количество элементов в первом массиве. Во второй строке  - N чисел (элементы массива). В третьей строке записано число M - количество элементов во втором массиве. В четвертой строке  - элементы второго массива.
Количество элементов каждого массива не превышает 100. Сами элементы по модулю не превышают 1000. Все числа целые.
 
Выходные данные
Выведите те элементы первого массива, которых нет во втором.Элементы необходимо вывести в том порядке, в каком они идут в первом массиве.
 
Примеры
Входные данные Выходные данные
1
7
3 1 3 4 2 4 12
6
4 15 43 1 15 1
3 3 2 12
 

Зл 9.25

Строки Алгоритмы обработки

Дано слово информатика. Путем "вырезок" и "склеек" его букв получить слова форма и тик. 
Результирующие слова выводить в столбик.

Пример входных и выходных данных

№ теста Входные данные Выходные данные
1 информатика форма
тик

Зл 9.24

Строки Алгоритмы обработки

Дано слово яблоко. Путем "вырезок" и "склеек" его букв получить слова блок и око. 
Результирующие слова выводить в столбик.

Пример входных и выходных данных

№ теста Входные данные Выходные данные
1 яблоко блок
око

Числообменник

Алгоритмы обработки Одномерные массивы

 
В начальный момент в массиве записаны по порядку числа от 1 до N (i-ое число - 
на i-ом месте). С массивом проделывают последовательно следующую операцию:
берут два числа, стоящих на местах A и B, и меняют их местами. Требуется
напечатать массив после выполнения этих операций.
 
Входные данные
Записано сначала число N (2<=N<=100). Далее идет число K - количество 
операций обмена (0<=K<=10000). Далее идет K пар чисел - номера мест 
элементов, обмен которых происходит.
 
Выходные данные
Выведите элементы массива после выполнения этих операций.
 
Пример ввода:
10
2
1 3
3 5
 
Пример вывода
3 2 5 4 1 6 7 8 9 10

Слова из слова

Строки Алгоритмы обработки

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

Примеры
Входные данные Выходные данные
1
informacia forma
YES
2
informacia moloko
NO

Редкие буквы

Строки Алгоритмы обработки

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

 

Примеры
Входные данные Выходные данные
1
processor informacia
penfm

Мама мыла раму

Строки Алгоритмы обработки

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

Примеры
Входные данные Выходные данные
1
mama myla ramu
ramu myla mama

Жизнь

Задача на реализацию Алгоритмы обработки

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

  • Если какая-то клетка бактерии имеет двух или трёх живых соседей, то в следующий момент времени она остаётся жить.
  • Если какая-то клетка бактерии имеет менее двух живых соседей, то в следующий момент времени она умирает от одиночества и становится пустой ячейкой.
  • Если какая-то клетка бактерии имеет более трёх живых соседей, то в следующий момент времени она умирает от перенаселения и становится пустой ячейкой.
  • Если у пустой ячейки таблицы имеется ровно три живых клетки-соседа, то в следующий момент времени в ней зарождается живая клетка.
Соседями ячейки являются ближайшие ячейки по горизонтали (справа и слева), по вертикали (снизу и сверху), а также по четырём диагоналям. Таким образом, у ячейки может быть максимум 8 соседей.

 

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

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

Ввод состоит из 10-ти строк. Каждая строка содержит в себе 10 символов. Символ '#' означает, что в соответствующей ячейки находится живая клетка бактерии, а символ '.' означает, что ячейка пуста.

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

Необходимо вывести таблицу 10 на 10 — изображение бактерии в следующий момент времени.

Число с максимальной суммой делителей

Задачи на процедуры и функции Алгоритмы обработки Линейные алгоритмы

Напишите функцию, вычисляющую сумму делителей числа

Используя данную функцию, напишите программу, которая среди n натуральных чисел, вводимых с клавиатуры, выводит на экран число с максимальным суммой делителей
Входные данные:
в первой строке вводится число n - количестве чисел (n<=100),
далее идут n строк по одному натуральному числу в строке
Выходные данные:
программа должна вывести одно  число, в котором сумма делителей числа максимальна среди всех чисел, если таких чисел несколько, то необходимо вывести число, которое встретилось в последовательности раньше

Количество баллов за задачу уточняется после ручной проверки (и будет снижено, в случае если вы не используете функцию!).
 

Пример

Ввод

Вывод

5
2
5
59
72
34
72
2
78
81
78
 

Число с максимальным количеством делителей

Задачи на процедуры и функции Алгоритмы обработки Простые числа и разложение на множители

Напишите функцию, вычисляющую количество делителей числа

Используя данную функцию, напишите программу, которая среди n натуральных чисел, вводимых с клавиатуры, выводит на экран число с максимальным количеством делителей
Входные данные:
в первой строке вводится число n - количестве чисел (n<=100),
далее идут n строк по одному натуральному числу в строке
Выходные данные:
программа должна вывести одно  число, в котором количество делителей максимально среди всех чисел, если таких чисел несколько, то необходимо вывести число, которое встретилось в последовательности раньше

Количество баллов за задачу уточняется после ручной проверки (и будет снижено, в случае если вы не используете функцию!).

Пример

Ввод

Вывод

5
22790
94
66
18
18
22790
2
21
46 
21
 

Число с максимальной первой цифрой

Задачи на процедуры и функции Алгоритмы обработки

Напишите функцию, вычисляющую первую цифру числа

Используя данную функцию, напишите программу, которая среди n натуральных чисел, вводимых с клавиатуры, выводит на экран число с максимальной первой цифрой
Входные данные:
в первой строке вводится число n - количестве чисел (n<=100)
далее идут n строк по одному натуральному числу в строке
Выходные данные:
программа должна вывести одно  число, у которого первая цифра максимальна среди всех чисел, если таких чисел несколько, то необходимо вывести число, которое встретилось в последовательности раньше

Количество баллов за задачу уточняется после ручной проверки (и будет снижено, в случае если вы не используете функцию!).
 

Пример

Ввод

Вывод

5
43
22
11
56
10
56
2
14
22
22
 

Число с максимальной суммой цифр

Задачи на процедуры и функции Алгоритмы обработки

Напишите функцию, вычисляющую сумму цифр числа

Используя данную функцию, напишите программу, которая среди n натуральных чисел, вводимых с клавиатуры, выводит на экран число с максимальной суммой цифр
Входные данные:
в первой строке вводится число n - количестве чисел (n<=100),
далее идут n строк по одному натуральному числу в строке
Выходные данные:
программа должна вывести одно  число, в котором сумма цифр максимальна среди всех чисел

Количество баллов за задачу уточняется после ручной проверки (и будет снижено, в случае если вы не используете функцию!).
 

Пример

Ввод

Вывод

5
43
22
11
56
10
56
2
34
12
34

20245

Алгоритмы обработки Двумерные массивы

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

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

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

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

Программа должна вывести одно число - номер победителя соревнований. Не забудьте, что  строки  (спортсмены) нумеруются с 0.

Пример

Ввод

Вывод

 4 3
 8 8 8
 5 9 3
 9 4 7
 6 6 2
2 
 

20244

Алгоритмы обработки Одномерные массивы

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

Сложение матриц

Двумерные массивы Алгоритмы обработки

Даны две квадратных таблицы чисел. Требуется построить третью, 
каждый элемент которой равен сумме элементов, стоящих на том же месте
в 1-й и 2-й таблицах.
 
Входные данные
Во входном файле записано сначала число N, затем записана первая таблица,
а после нее - вторая. Элементы таблиц - числа от 0 до 100. 
1<=N<=100.
 
Выходные данные
В выходной файл выведите результирующую таблицу.
 
Пример входного файла
3
1 2 3
4 5 6
7 8 9
 
11 12 13
14 15 16
17 18 19
 
Пример выходного файла
12 14 16
18 20 22
24 26 28
 

Симметричная матрица

Двумерные массивы Алгоритмы обработки

Симметричная матрица
 
Дана квадратная матрица. Проверить, является ли она симметричной относительно
главной диагонали.
 
Входные данные. В файле INPUT.TXT записано число n (0<n<=100). 
В следующих n строках записано по n целых чисел от -32768 до 32767. 
 
Выходные данные. В файл OUTPUT.TXT вывести YES, 
если матрица симметрична относительно главной диагонали, иначе вывести NO.
 
Пример файла INPUT.TXT
3
1 2 3
2 4 5
3 5 6
 
Пример файла OUTPUT.TXT
YES
 

Нолики

Двумерные массивы Алгоритмы обработки

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

ГАИ

Алгоритмы обработки Линейный поиск

ГАИ
 
Вдоль шоссе в точках X1,X2,...,XN расположены посты ГАИ. 
В точке X произошло мелкое ДТП (дорожно-транспортное происшествие).
Требуется определить, какой из постов ГАИ расположен ближе всего
к этой точке, чтобы с него послать к месту происшествия наряд милиции.
 
Входные данные
Во входном файле записано сначала число N - количество пунктов ГАИ. (1<=N<=100)
Далее следуют координаты расположения постов ГАИ на прямом шоссе
(целые числа от -10000 до 10000). Далее идет координата точки,
в которой произошло ДТМ (целое число от -10000 до 10000).
 
Выходные данные
В выходной файл требуется вывести одно число - номер поста ГАИ,
с которого нужно послать наряд к месту ДТП. Если несколько постов
ГАИ находятся на одинаковом расстоянии от точки ДТП, выведите любой из них.
 
Пример входного файла
5
10 2 8 -7 3
7
 
Пример выходного файла
3

Минимум в таблице

Двумерные массивы Алгоритмы обработки

Минимум в таблице
 
Дана таблица чисел, состоящая из N строк по M чисел в каждой.
Все числа в таблице - натуральные, не превышающие 1000.
Требуется найти наименьшее число в этой таблице.
 
Входные данные
Во входном файле записано сначала число N - количество строк,
а затем число M - количество столбцом таблицы (1<=N<=100, 1<=M<=100).
Далее идет сама таблица.
 
Выходные данные
В выходной файл выведите наименьшее число, которое встречается в таблице.
 
Пример входного файла
3 4
6 4 10 4
3 7 5 7
6 3 4 3
 
Пример выходного файла
3
 
 

Конкурирующие фирмы

Вычисление по заданной формуле Алгоритмы обработки

В некотором государстве действует N фирм, конкурирующих между собой.
У каждой фирмы есть некоторая прибыль в год, равная V[i]
американских рублей.  У царя есть любимые фирмы,
а есть нелюбимые. Соответственно, налог для всех фирм разный и назначается
царем в индивидуальном порядке.
Налог на i-ую фирму равен p[i] процентов.
Собиратели статистики решили посчитать,
с какой фирмы в государственную казну идет наибольший доход
(в казну идут все налоги). К сожалению, они не учили в детстве
ни математику, ни информатику (так что учитесь, дети!),
и их задача резко осложняется. Помогите им в этой нелегкой задаче.
 
Входные данные
-----------------------
сначала записано число N - число фирм (0<N<=100).
Далее идет N целых неотрицательных чисел, не превышающих 154 - доходы фирм,
а затем еще N целых чисел от 0 до 100 - налоги фирм в процентах.
 
Выходные данные
------------------------
В выходной файл выведите одно число - номер фирмы, от которой государство
получает наибольший налог. Если таких фирм несколько, выведите любую из них.
 
Пример входного файла:
3
100 1 50
0 100 3
 
Пример выходного файла:
3
 

Количество единиц, двоек, троек и т.д. #2

Алгоритмы обработки Одномерные массивы

(Та же задача, что и "Количество единиц, двоек, троек и т.д. #1", только может быть введено до 100000 чисел)
 
Вводятся числа от 1 до 9 до тех пор,
пока не будет введен 0. Всего будет введено не более 100000 чисел
 
Посчитать количество единиц в этой последовательности,
количество двоек, количество троек и так далее (в выходном
файле всегда должно быть 9 чисел).
 
 
Пример входного файла
1 1 4 1 5 8 6 3 5 1 0
 
Пример выходного файла:
4 0 1 1 2 1 0 1 0
 

Количество единиц, двоек, троек и т.д. #1

Алгоритмы обработки Одномерные массивы

Вводятся числа от 1 до 9 до тех пор, 
пока не будет введен 0. Всего будет введено не больше 100 чисел.
 
Посчитать количество единиц в этой последовательности, 
количество двоек, количество троек и так далее (в выходном
файле всегда должно быть 9 чисел).
 
 
Пример ввода:
1 1 4 1 5 8 6 3 5 1 0         
 
Пример вывода:
4 0 1 1 2 1 0 1 0
 

Количество пар одинаковых чисел

Алгоритмы обработки Одномерные массивы

Среди заданных N натуральных чисел определить сколько среди них пар одинаковых чисел.

Входные данные
В первой строке задается натуральное число N - количество чисел. Во второй строке - N натуральных чисел (\(2<=N<=100\), все числа не превышают 100).

Выходные данные
Выведите одно число - количество пар одинаковых чисел.
 
 
Примеры
Входные данные Выходные данные Примечание
1
5
1 3 2 2 3
2  
2
4
1 1 1 1
6
Пару одинаковых чисел образовывают любые два числа 
последовательности, поэтому ответом будет число пар, которое вообще
может быть (это пары чисел, стоящих на местах: (1,2), (1,3), (1,4),
(2,3), (2,4), (3,4)).

Переворачиватель последовательности - 1

Одномерные массивы Алгоритмы обработки

Вводится сначала число N, а затем N чисел. Выведите эти N чисел в следующем порядке: сначала выводятся числа, стоящие на нечетных местах, а затем - стоящие на четных местах.
 
Входные данные
Вводится число N (0<N<100), а затем N чисел. Каждое число не превышает 100 по модулю.
 
Выходные данные
Выведите N чисел в заданном порядке.
 
Примеры
Входные данные Выходные данные
1
7
2 4 1 3 5 3 1
2 1 5 1 4 3 3

Переворачиватель последовательности - 2

Алгоритмы обработки Одномерные массивы

Вводится сначала число N, а затем N чисел. Выведите эти N чисел в следующем порядке: сначала выводятся все нечетные числа в том порядке, в каком они встречались во входном файле, а затем - все четные.
 
Входные данные
Вводится число N (\(0<N<100\)), а затем N чисел. Каждое число не превышает по модулю 100.
 
Выходные данные
Выведите N чисел в обратном порядке.

 
Примеры
Входные данные Выходные данные
1
7
2 4 1 3 5 3 1
1 3 5 3 1 2 4

Переворачиватель последовательности - 3

Одномерные массивы Алгоритмы обработки

Вводится сначала число N, а затем N чисел. Выведите эти N чисел в обратном порядке.
 
Входные данные
Вводится число N (0<N<100), а затем N чисел. Каждое число не превышает 100 по модулю.
 
Выходные данные
Выведите N чисел в обратном порядке.
 
Примеры
Входные данные Выходные данные
1
7
2 4 1 3 5 3 1
1 3 5 3 1 4 2
 

Четные числа на четных местах

Алгоритмы обработки

Вводится последовательность чисел. Посчитать в ней количество четных чисел, стоящих на четных местах.
 
Входные данные
Вводится сначала число N, а затем N чисел - члены последовательности.
 
Выходные данные
Выведите количество четных чисел, стоящих на четных местах в последовательности.
 
 
Примеры
Входные данные Выходные данные
1
5
1 2 4 5 6
1
 
Пояснение: единственное четное число, стоящее на четном месте в последовательности - это число 2. Числа 4 и 6 не подходят, так как стоят, соответственно, на 3 и 5-м местах.

Количество повторов максимального числа

Алгоритмы обработки Одномерные массивы

Дана последовательность чисел. Выяснить, сколько раз в ней встречается максимальное число.
 
Входные данные
Вводится сначала число N - количество членов последовательности, а затем N чисел - члены последовательности.
 
Выходные данные
Выведите одно число - сколько раз в последовательности встречается максимальное число.
 
Примеры
Входные данные Выходные данные
1
7
1 4 2 5 2 5 3
2

Число с максимальной суммой делителей

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

По заданному числу определите число из диапазона от 1 до N с максимальной суммой делителей (включая непростые делители, 1 и само число). Если таких чисел несколько, выведите максимальное из них.


Входные данные
На вход подается натуральное число.

Выходные данные
Выведите на экран ответ на задачу.
 
 
Примеры
Входные данные Выходные данные
1 5 4

Сумма цифр чисел делится на K

Линейные алгоритмы Алгоритмы обработки

Вводятся два числа N и K. Выведите количество чисел из диапазона от 1 до N включительно таких, что их сумма цифр делится на K.


Входные данные
На вход подаются два числа в одной строке, разделенные пробелом.

Выходные данные
Выведите на экран ответ на задачу.
 
 
Примеры
Входные данные Выходные данные
1 100 3 33
2 22 4 5

Сумма цифр числа

Строки Алгоритмы обработки

Напишите программу, которая считает сумму цифр числа.

Входные данные
На вход подается одно натуральное число.

Выходные данные
Выведите на экран сумму его цифр.
 
 

Примеры
Входные данные Выходные данные
1 157 13

Средний балл по предметам

Использование сортировки Алгоритмы обработки

Годовые оценки по девяти предметам за 9-й класс каждого из N учеников класса напечатаны в виде таблицы (в первой строке - оценки первого ученика, во второй - второго и т.д.). Фамилия ученика записана в первом столбце. Необходимо вывести данную таблицу в порядке убывания среднего балла. В случае равенства среднего балла, фамилии выводить в порядке их следования в исходных данных.

Входные данные
На вход программе подаются:
- в первой строке число N - количество учеников (1<=N<=25);
- далее идут N строк, в формате <фамилия (последовательность латинских символов)> <оценка за 1й предмет> <оценка за 2й предмет> ...  <оценка за 9й предмет>.

Выходные данные
Вывести на экран таблицу, записанную в порядке убывания среднего балла по всем предметам в формате:
<Фамилия> <Средний балл (с точностью 6 знаков после запятой)>
В случае равенства среднего балла, фамилии выводить в порядке их следования в исходных данных.
 

Примеры
Входные данные Выходные данные
1
3
Sidorov 1 1 1 1 1 1 1 1 1 
Ivanov 5 5 5 5 5 5 5 5 5
Petrov 4 4 4 4 4 4 4 4 4
Ivanov 5.000000
Petrov 4.000000
Sidorov 1.000000

15580

Использование сортировки Алгоритмы обработки

Годовые оценки по девяти предметам за 9й класс каждого из N учеников класса напечатаны в виде таблицы (в первой строке - оценки первого ученика, во второй - второго и т.д.) Фамилия ученика записана в первом столбце. Необходимо вывести данную таблицу в алфавитном порядке (по возрастанию, начиная с A заканчивая Z)

Входные данные: на вход программе подаются
в первой число N - количество учеников, 1<=N<=25
далее идут N строк, в формате <фамилия-последовательность латинских символов> <оценка за 1й предмет> <оценка за 2й предмет>...  <оценка за 9й предмет>

Выходные данные: вывести на экран исходную таблицу, записанную в алфавитном порядке от A до Z

Примеры

входные данные
3
Sidorov 1 1 1 1 1 1 1 1 1 
Ivanov 5 5 5 5 5 5 5 5 5
Petrov 4 4 4 5 4 5 5 5 5
выходные данные

		
Ivanov 5 5 5 5 5 5 5 5 5
Petrov 4 4 4 5 4 5 5 5 5
Sidorov 1 1 1 1 1 1 1 1 1
 

15578

Структуры Алгоритмы обработки

Известны данные о количестве учащихся в каждом из N учебных заведений и о типе этого заведения (s-школа, t-техникум, u-училище). Составить программу, с сипользованием структур, которая находит среднее количество учащихся в каждом типе учебного заведения. Предполагается, что в записях имеется хотя бы 1 учреждение каждого типа

Входные данные: на вход программе подаются
в первой число N - количество записей, 1<=N<=25
далее идут N строк, в формате <число от 100 до 500 - число учащихся> <тип учебного заведения - буква s, t или u>
 
Выходные данные: вывести три числа через пробел в формате <среднее количество учащихся школ> <среднее количество учащихся техникумов> <среднее количество учащихся училищ> - все числа выводить с точностью до 6 знаков после запятой

15577

Алгоритмы обработки Структуры

Известны данные о количестве учащихся в каждом из N учебных заведений и о типе этого заведения (s-школа, t-техникум, u-училище). Составить программу, с сипользованием структур, которая находит число учащихся НЕ школ.

Входные данные: на вход программе подаются
в первой число N - количество записей, 1<=N<=25
далее идут N строк, в формате <число от 100 до 500 - число учащихся> <тип учебного заведения - буква s, t или u>
 
Выходные данные: вывести одно число - количество учащихся НЕ школ

15576

Структуры Алгоритмы обработки

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

Входные данные: на вход программе подаются
в первой число N - количество записей, 1<=N<=25
далее идут N строк, в формате <число от 1 до 101 - возраст человека> <пол - буква m (мужской) или f (женский)>
 
Выходные данные: вывести одно число - средний возраст мужчин (число, с точностью 6 знаков после запятой)

15575

Структуры Алгоритмы обработки

Известна информация о 25 моментах времени одних и тех же суток: часы (значения от 0 до 23) и минуты (от 0 до 59). Составить программу, с сипользованием структур, сравнивающую два любых момента времени по их условному порядковому номеру (определяющую, какой из моментов был в эти сутки раньше). 

Входные данные: на вход программе подаются
в первой строке два целых числа, номера первого и  второго моментов времени
далее идут 25 строк, в формате <номер записи> <часы-число от 0 до 23> <минуты-число от 0 до 59>
 
Выходные данные: вывести номер записи более раннего момента в сутки (из двух указанных во входных данных) В случае если моменты времени равны, вывести номер, который встретился раньше

Минимум из четырех

Задачи на процедуры и функции Алгоритмы обработки

Напишите функцию, которая находит минимум из 4х чисел. 

Используя данную функцию, напишите программу, которая запрашивает у пользователя 4 натуральных числа (n<=100000) и выводит на экран минимальное из них

Количество баллов за задачу уточняется после ручной проверки (и будет снижено, в случае если вы не используете функцию или функция вычисляет кратность не по приведенному алгоритму!).

Пример

Ввод

Вывод

1 2 3 4 1
5 3 7 9  3


Поиск двух минимумов

Алгоритмы обработки Одномерные массивы

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

Входные данные
Элементы массива вводятся в одну строку через пробел.

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

Пример
Входные данные Выходные данные
1 20 8 13 25 29 0 10 4 31 24 11 24 27 23 11 6 8

Количество минимальных элементов

Алгоритмы обработки Одномерные массивы

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

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

Выходные данные
Выведите ответ на задачу.
 

Пример
Входные данные Выходные данные
1 10
10 8 10 8 10 8 8 8 10 8
6

От а до b. Задача 5

Цикл for Алгоритмы обработки

Даны два целых числа a и b, и натуральное число c
Напишите программу, которая находит сумму всех целых чисел от a до b, кратных числу c

Входные данные: 
Вводятся три целых числа a и b  и натуральное число с (a<=b,  a,b,с не больше 100 по модулю). Каждое число записано в отдельной строке.

Выходные данные:
Программа должна вывести одно число - сумму всех целых чисел от a до b, кратных числу c

Пример

Ввод

Вывод

5
25
4
80

7079

Двумерные массивы Алгоритмы обработки

Дан целочисленный прямоугольный массив 6x10. Напишите программу вычисления суммы минимальных элементов из каждой строки. Напечатать значение этой суммы. Предполагается, что в каждой строке минимальный элемент единственный.

Рост мальчиков и девочек

Алгоритмы обработки Одномерные массивы Вычисление по заданной формуле

Известен рост каждого ученика класса. Рост мальчиков условно задан отрицательными числами. Верно ли, что средний рост мальчиков превышает средний рост девочек более чем на 10 см?

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

Выходные данные
Выведите на экран слово YES, если средний рост мальчиков больше среднего роста девочек более чем на 10см, в противном случае вывести слово NO.
 

Примеры
Входные данные Выходные данные
1
5
-112 -23 83 44 -124
YES
2
3
-63 -117 141
NO

Сумма элементов массива

Алгоритмы обработки Одномерные массивы

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

Выходные данные
Вывести сумму элементов массива, кратных a или b.
 

Примеры
Входные данные Выходные данные
1 5
1 2 3 4 5
2 3
9
2 3
1 2 3
1 2
6

Заполнение массива по правилу - 2

Одномерные массивы Алгоритмы обработки

Дано неотрицательное число N - количество элементов массива (N<=100). Напишите программу, которая заполняет массив из N элементов первыми натуральными трехзначными числами, произведение цифр которых есть трехзначное число. Выведите заполненный массив на экран в одну строку, отделяя элементы друг от друга одним пробелом.
 

Примеры
Входные данные Выходные данные
1 5 269 278 279 287 288

4997

Строки Алгоритмы обработки

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

Пример входных и выходных данных

№ теста Входные данные Выходные данные
1 a b aab
2 aaa aaa

Вставка элемента перед максимальным

Работа с элементами (вставка, удаление, сдвиг) Алгоритмы обработки

Дан массив из N элементов (\(2<=N<=100\)). Вставить значение a перед всеми элементами равными максимальному значению. 

Входные данные
В первой строке задается число N - количество элементов массива. Вторая строка содержит число a. Третья строка содержит N чисел - значения элементов массива.

Выходные данные
Выведите результирующий массив в одну строку.
 

Примеры
Входные данные Выходные данные
1 5
100
43  50  76  84 100 
43 50 76 84 100 100

Новые ученики. Вставка элементов в массив

Работа с элементами (вставка, удаление, сдвиг) Алгоритмы обработки

В классе обучается N учеников (\(5<=N<=25\)). Значения роста учеников хранится в упорядоченном по убыванию массиве. В начале учебного года в класс поступили два новых ученика ростом A и В. Напишите программу, которая добавляет в массив рост новых учеников. Полученный массив должен быть также упорядоченным по убыванию. Программа не должна использовать сортировку данных.

Входные данные
На входе подаются в первой строке N - число учеников класса. Вторая строка содержит число А и число В. Третья строка содержит N чисел - значения элементов массива. Значения упорядочены по убыванию. 

Выходные данные
Выведите результирующий массив в одну строку.
 

Примеры
Входные данные Выходные данные
1 5
160  170
180 175 163 154 150
180 175 170 163 160 154 150