Отличная тренировка для начинающих разработчиков на знание Java core. В статье будет представлено описание 5 задач с разным уровнем сложности.

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

Задача 1

Ограничение времени

Ограничение памяти

1 секунда

256 МБ

Пин часто ассистирует в лаборатории Лосяша. Они проводят то химические, то физические эксперименты. Разумеется, каждый эксперимент требуется для улучшения бытовых условия всех Смешариков. В этот раз они проводят эксперимент с новым видом мха.

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

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

  2. Сразу после этого мох умирает и больше не растет в этой клетке никогда.

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

Лосяша интересует количество занятых мхом клеток на n-й минуте эксперимента.

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

Единственная строка содержит целое число n (1 ≤ n ≤ 10^8) - номер минуты от начала эксперимента. Для примера, n = 1 означает «первую» минуту, то есть отрезок времени длиной в минуту, начинающийся от самого начала эксперимента.

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

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

Примеры данных

Пример 1

Ввод

Вывод

1

1

Пример 2

Ввод

Вывод

2

4

Задача 2

Ограничение времени

Ограничение памяти

2 секунда

256 МБ

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

Предположим, что ширина листа составляет n клеток, а высота равна m клеткам. Ваша задача помочь Ёжику и показать, как будут записаны числа!

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

В единственной строке ввода через пробел записаны числа n и m (1 ≤ n, m ≤ 2 * 10^5; 1 ≤ n * m ≤ 2 * 10^5) - размеры листа из книжечки.

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

Выведите все натуральные числа от 1 до n * m в указанном формате, разделяя числа в одной строке пробелами, а между строками - переводами строки.

Примеры данных

Пример 1

Ввод

Вывод

3 3

1 2 4

3 5 7

6 8 9

Пример 2

Ввод

Вывод

4 3

1 2 4 7

3 5 8 10

6 9 11 12

Задача 3

Ограничение времени

Ограничение памяти

2 секунды

256 МБ

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

Вам предстоит написать программу, которая будет обрабатывать m событий. Каждое событие может быть либо «Пин положил деталь с номером Х», либо «Пин взял с полки деталь с номером Х». Для каждого события первого типа требуется определить номер полки, на которую Пин положит деталь.

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

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

В первой строке вводится число m (1 ≤ m ≤ 2 * 10^5) - число событий. Далее следуют m строк, описывающих события. Каждая деталь задаётся номером - числом от 1 до 10^5. Событие « + Х» означает, что Пин положил деталь с номером Х, событие «- Х» - что деталь убрали и полка стала свободной. В нулевой момент времени все полки свободны.

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

Для каждого события «Пин положил деталь» выведите номер полки, на которую её положили, в том порядке, в котором эти события происходили.

Примеры дан��ых

Ввод

Вывод

8

1

+ 11

2

+ 1

1

- 11

1

+ 2

3

- 2

+ 3

+ 2

- 1

Задача 4

Ограничение времени

Ограничение памяти

2 секунды

64 МБ

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

Помогите Барашу вычислить значение выражения или скажите, содержится ли в нем ошибка. В правильном выражении могут встречаться числа, а также знаки сложения, вычитания, умножения и скобки. Приоритет операций стандартный. Все числа в выражении целые и принадлежат диапазону [-2^63; 2^63 - 1].

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

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

Единственная строка ввода содержит заданное выражение. Его длина не превосходит 100 знаков. Гарантируется, что выражение заканчивается точкой.

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

Выведите значение этого выраже��ия или слово «WRONG» (без кавычек), если значение не определено.

Примеры данных

Пример 1

Ввод

Вывод

1+(2*2-3).

2

Пример 2

Ввод

Вывод

1+a+1.

WRONG

Задача 5

Ограничение времени

Ограничение памяти

2 секунды

64 МБ

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

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

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

В первой строке даны два числа N и M (2 ≤ N ≤ 10^4; 1 ≤ M ≤ 2 * 10^4) - количество домиков и дорожек соответственно. Следующие M строк содержат тройки чисел s(i) f(i), h(i) (1 ≤ s(i) ≤ N; 1 ≤ f(i) N; 1 ≤ h(i) ≤ 10^6) - описания дорожек, где s(i) и f(i) - номера домиков, которые соединяет i-я дорожка, а h(i) - её высота над уровнем моря.

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

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

Примеры данных

Пример 1

Ввод

Вывод

2 1

100

1 2 100

Пример 2

Ввод

Вывод

4 5

300

1 2 100

1 3 400

2 3 300

2 4 200

3 4 500