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

45 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Новый амбар Фермера Джона представляет собой большой круг из 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.

У Фермера Джона 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.


Беси согласилась помочь ФД уложить пакеты с сеном. Она начинает с 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#89789

Коровы вернулись! Фермер Джон аккуратно выстроил 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.

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

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

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

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

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


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

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

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

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

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

Дано количество целых чисел 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.

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

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

На вход подается битовая строка - строка, состоящая из 0 и 1. Дополните исходную строку последним битом - битом чётности. Бит чётности равен 0, если в исходной строке чётное число единиц, и равен 1, если нечётное (в получившейся строке должно быть всегда чётное число единиц).
 
Примеры
Входные данные Выходные данные
1 00110010 001100101
66451#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#65983
Химики смешивают несколько добавок к топливу и проверяют, при какой температуре смесь превысит заранее заданное давление. Для этого смесь нагревают в химическом реакторе. Лаборант, которого оставляют следить за реактором, пишет в текстовый файл температуру смеси, которую измеряет раз в минуту. Когда давление превышает заданное значение, процесс прекращается, реактор охлаждают и загружают новую смесь. Определите, сколько длился самый долгий нагрев смеси. При нагреве, что очевидно, температура смеси не уменьшается.

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

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

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

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