Куча(30 задач)
    Двоичное дерево поиска(24 задач)
    Дерево отрезков, RSQ, RMQ(90 задач)
    Бор(14 задач)
    Дерево Фенвика(6 задач)
    Декартово дерево(10 задач)
---> 174 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 1 2 3 4 5 6 7 >> Отображать по:
За победу команда получает 2 очка, за ничью - 1, за поражение - 0. По известным результатам команд требуется восстановить турнирную таблицу.

В турнире по хоккею участвовало K команд, каждая сыграла с каждой по одному матчу. За победу команда получала 2 очка, за ничью – 1, за поражение – 0 очков.

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

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

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

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

Выведите турнирную таблицу в следующем формате. Таблица должна состоять из K строк с результатами игр команд, занявших первое, второе, …, последнее место (команды, набравшие одинаковое число очков, могут быть расположены в таблице в любом порядке). В каждой строке должно быть записано K чисел через пробел – количество очков, набранных в игре данной команды с первой, второй, … командами соответственно. Количество очков – это число 0, 1 или 2. В клетках на главной диагонали (соответствующих не существующей игре команды "самой с собой") нужно записать нули.

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

Примеры
Входные данные
4
6 4 2 0
Выходные данные
0 2 2 2 
0 0 2 2
0 0 0 2
0 0 0 0
Входные данные
4
3 3 3 3
Выходные данные
0 2 0 1
0 0 2 1
2 0 0 1
1 1 1 0
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

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

В далекие времена (когда задачи на алгоритм Дейкстры вызывали сложность) специальное ведомство составила такой набор дорог \(T\), вдоль которого можно было проехать из столицы в любой город, причем единственным образом. Разумеется, путь по дорогам из набора \(T\) из столицы в каждый город являлся кратчайшим. Особо умные жители страны попросту называли этот набор дорог "деревом кратчайших путей". Известно, что Президент пользовался дорогами из \(T\) во время своих поездок. За прошедшие годы этот набор перестал быть секретным, и, поэтому, стал объектом повышенного внимания берляндских экстремистов. У специального ведомства новое задание. Для каждого города кроме столицы необходимо вычислить кратчайшее расстояние до него, при условии, что та дорога по которой Президент должен был закончить свой путь в этот город является атакованной и проезжать по ней нельзя.

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

В первой строке входного файла записана пара целых чисел \(n\) и \(m\) (\(2 \leq n \leq 4\,000\); \( n - 1 \leq m \leq 100\,000\)), где \(n\) — количество городов в стране, а \(m\)— количество дорог в этой стране. Далее в \(m\) строках содержатся описания дорог, по одной дороге в строке. Каждая дорога задается четверкой целых чисел \(a_j\), \(b_j\), \(l_j\), \(t_j\) , где \(a_j\), \(b_j\) это номера городов, соединяемых дорогой (\(1 \leq a_j, b_j \leq n\); \(a_j \neq b_j\)), \(l_j\) — ее длина (\(1 \leq l_j \leq 10^5\)), а \(t_j\) равно 1 если дорога принадлежит дереву кратчайших путей и 0 в противном случае.

Гарантируется, что набор \(T\) удовлетворяет описанным выше свойствам. Между парой городов может быть более одной дороги. Все дороги двусторонние.

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

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

Примеры
Входные данные
5 9
3 1 3 1
1 4 2 1
2 1 6 0
2 3 4 0
5 2 3 0
3 2 2 1
5 3 1 1
3 5 2 0
4 5 4 0
Выходные данные
6 7 8 5
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Фирма OISAC выпустила новую версию калькулятора. Этот калькулятор берет с пользователя деньги за совершаемые арифметические операции. Стоимость каждой операции в долларах равна 5% от числа, которое является результатом операции. На этом калькуляторе требуется вычислить сумму N натуральных чисел (числа известны). Нетрудно заметить, что от того, в каком порядке мы будем складывать эти числа, иногда зависит, в какую сумму денег нам обойдется вычисление суммы чисел (тем самым оказывается нарушен классический принцип “от перестановки мест слагаемых сумма не меняется”). Например, пусть нам нужно сложить числа 10, 11, 12 и 13. Тогда если мы сначала сложим 10 и 11 (это обойдется нам в 1.05 €), потом результат с 12 (1.65 €), и затем с 13 (2.3 €), то всего мы заплатим 5 €, если же сначала отдельно сложить 10 и 11 (1.05 €), потом 12 и 13 (1.25 €) и, наконец, сложить между собой два полученных числа (2.3 €), то в итоге мы заплатим лишь 4.6 €. Напишите программу, которая будет определять, за какую минимальную сумму денег можно найти сумму данных N чисел.

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

Первая строка входных данных содержит число N (2 ≤ N ≤ 105). Во второй строке заданы N натуральных чисел, каждое из которых не превосходит 10000.

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

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

Примеры
Входные данные
4
10 11 12 13
Выходные данные
4.60
Входные данные
2
1 1
Выходные данные
0.10
ограничение по времени на тест
1.5 second;
ограничение по памяти на тест
64 megabytes

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

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

В первой строке вводится натуральное число N (1 ≤  N ≤ 105) – количество элементов в массиве. В следующей строке содержатся N целых чисел, не превосходящих по модулю 109 – элементы массива. Далее идет число K  (0 ≤ K ≤ 105) – количество запросов к структуре данных. Каждая из следующих K строк содержит два целых числа l и r (1 ≤ l ≤ r ≤ N) – левую и правую границы отрезка в массиве для данного запроса.

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

Для каждого из запросов выведите два числа: наибольшее значение среди элементов массива на отрезке от l до r и индекс одного из элементов массива, принадлежащий отрезку от l до r, на котором достигается этот максимум.

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

Выходные данные
7 1
6 4
1 3
Входные данные
1
0
1
1 1
Выходные данные
0 1
Входные данные
2
0 1
3
1 1
1 2
2 2
Выходные данные
0 1
1 2
1 2
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

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

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

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

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

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

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

Первая строка входных данных содержит число N – количество отрезков и число K – количество запросов (1 ≤ NK ≤105). Далее идет K строчек, содержащих запросы к структуре данных. Каждый запрос начинается с числа 1 (запрос на создание группы) или 2 (запрос на удаление группы). После числа 1 указывается два других числа l и r (1 ≤ l ≤ r ≤ N), после числа 2 указывается одно число i (1 ≤ i ≤ N).

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

Для каждого запроса типа 1 необходимо отрезки с номерами от l до r объединить в группу. Если все эти отрезки не входят ни в одну группу, запрос считается удачным и программа должна вывести 1. Если хотя бы один из этих отрезков уже относится к какой-то группе, запрос считается неудачным, объединение не производится и программа выводит 0.

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

Разбалловка для личной олимпиады

Тесты 1-1 — из условия. Оцениваются в 0 баллов.

Тесты 2-11 — n, q не превосходят 1000. Каждый тест оценивается в 7 баллов.

Тесты 13-27 — дополнительных ограничений нет. Группа тестов оценивается в 30 баллов, баллы начисляются только при прохождении всех тестов группы и всех тестов предыдущих групп. (вместе с предыдущими группами — 100 баллов).

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

Выходные данные
1
1
0
4 5
1 2
0 0

Страница: << 1 2 3 4 5 6 7 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест