Задачи районно-городских командных соревнований 2004
1. Access denied
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
В некоторой операционной системе общие ресурсы обозначаются латинскими буквами от A до Z.
Пользователь не сможет получить доступ к ресурсу системы, если его уровень доступа меньше требуемого для данного ресурса.
Напишите программу, которая по информации о минимальном уровне доступа к ресурсам системы и уровням доступа пользователей,
определяет, какие ресурсы системы доступны каждому пользователю.
В первой строке входного файла содержатся два целых числа, разделенных пробелом – количество ресурсов системы `M` (`0\ <\ M\ ≤\ 26`)
и количество пользователей `N` (`0\ <\ N\ ≤\ 100`). Во второй строке содержится `M` целых чисел от 0 до 1000,
разделенных пробелами – минимальные уровни доступа к ресурсам, первое число – минимальный уровень доступа к ресурсу A, второе
число – к ресурсу B и т. д. В третьей строке содержится `N` целых чисел от 0 до 1000, разделенных пробелами – уровни
доступа пользователей.
В выходной файл для каждого пользователя вывести строку, состоящую из имен ресурсов системы,
доступных этому пользователю. `i`-я строка выходного файла соответствует `i`-му пользователю из входного файла.
Имена ресурсов перечисляются в алфавитном порядке.
Пример ввода
5 3
10 11 7 4 30
8 15 10
Пример вывода
CD
ABCD
ACD
2. Квадратный корень
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Выражение
может быть упрощено следующим образом:
Напишите программу, выполняющую такое упрощение. Так как упрощение до одного слагаемого возможно не всегда,
программа должна минимизировать количество слагаемых. Известно, что если количество слагаемых в результирующем выражении
минимально, то варианты упрощения отличаются только порядком слагаемых.
В первой строке входного файла содержатся целое число `N` (`1\ ≤\ N\ ≤\ 50`) – количество слагаемых в исходном выражении.
Во второй строке содержится `N` целых чисел от 1 до 1000, разделенных пробелами – числа `A_i`, стоящие под знаком корня
в исходном выражении.
В выходной файл вывести строку, содержащую целые числа
`B_j`, стоящие под знаком корня в упрощенном выражении,
такие что
. Числа
`B_j` должны быть выведены в порядке возрастания и разделены пробелами.
Количество слагаемых после упрощения должны быть минимальным.
Пример ввода 2
5
1 3 5 12 20
3. Потерянное место
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Когда файлы сохраняются на диске, они хранятся в кластерах, имеющих фиксированный размер.
Фактическое место, занимаемое файлом на диске, всегда кратно размеру кластера. Так, если кластер имеет
размер 100 байт, а файл – 185 байт, то файл занимает 200 байт на диске, и 15 байт на диске являются потерянными.
Напишите программу, выполняющую расчет потерянного места на диске для каждой папки с файлами.
В первой строке входного файла содержатся три целых числа, разделенных пробелами – количество папок на диске `N` (`0\ <\ N\ ≤\ 50`),
количество файлов на диске `M` (`0\ ≤\ M\ ≤\ 1000`) и размер кластера `S` (`0\ <\ S\ ≤\ 1000000`). Далее следует `M` строк,
в каждой строке содержатся два целых числа, разделенных пробелом – номер папки `F` (`0\ ≤\ F\ <\ N`), в которой находится файл,
и размер файла `Z` (`0\ ≤\ Z\ ≤\ 1000000`). Папки нумеруются от 0 до `N-1`.
В выходной файл вывести `N` строк. В `i`-й строке выводится одно целое число – сумма потерянного места
при размещении файлов `(i-1)`-ой папки (для `i` от 1 до `N`).
Пример ввода
3 3 50
0 55
0 47
1 86
Примечание к примеру: так как в папке с номером 2 файлов нет, то и потери равны 0.
4. Цифры-делители
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Напишите программу, вычисляющую на сколько своих цифр некоторое число делится без остатка.
В первой строке входного файла содержатся число `N` (`0\ <\ N\ <\ 10^9`).
В выходной файл вывести количество цифр-делителей для числа `N`.
Примечание к примеру: 661232 делится на 1 и на 2 (таких цифр две) и не делится на 3 и 6.
5. Игра
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
В некоторой компьютерной игре бои между человеком и компьютером происходят следующим образом. Юниты обоих армий
выстраиваются в линию друг против друга таким образом, чтобы каждый юнит одного игрока стоял напротив юнита другого игрока.
После расстановки между парами юнитов происходит бой, и более сильный юнит побеждает, а проигравший юнит убирается с доски.
Если силы юнитов равны, то побеждает юнит компьютера. Но у человека есть другое преимущество,
он расставляет свои юниты после компьютера и может выбирать порядок расстановки.
Напишите программу, которая максимизирует суммарную силу юнитов, оставшихся у человека-игрока после боя.
В первой строке входного файла содержится целое число – количество наборов исходных данных `K` (`1\ ≤\ K\ ≤\ 10`).
Далее следует `K` блоков из трех строк, каждый блок описывает одну игровую ситуацию. В первой строке блока
содержится целое число – количество юнитов `N` (`0\ <\ N\ ≤\ 50`) у каждого из игроков. Во второй строке содержится `N` целых чисел
от 1 до 1000, разделенных пробелами – сила юнитов игрока-человека.
В третьей строке содержится `N` целых чисел от 1 до 1000, разделенных пробелами – сила юнитов компьютера.
В выходной файл вывести для каждой игровой ситуации вывести строку, содержащую одно целое число – максимальную
суммарную силу юнитов, оставшихся у человека-игрока после боя при правильной расстановке.
Пример ввода
2
5
5 15 100 1 5
15 5 100 2 5
10
2 3 4 5 6 7 8 9 10 11
10 9 8 7 6 5 4 3 2 1
Примечание: в первой игровой ситуации человек ставит юнит с силой 100 напротив юнита компьютера с силой 15, 15 напротив 5, 5 напротив 2, 5 напротив 5 и 1 напротив 100, теряет два юнита с суммой 6, и у него останется три юнита с суммой 120; во второй игровой ситуации человек не теряет ни одного юнита.
6. Плитки
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Для замощения прямоугольных областей будем использовать L-образную плитку, которую можно поворачивать произвольным образом:
Напишите программу, подсчитывающую число вариантов замощения L-образной плиткой, прямоугольников заданного размера. Например, для прямоугольника 3x4 существует 4 способа замощения:
В первой строке входного файла содержатся два целых числа, разделенных пробелом – длина прямоугольника `L` (`1\ ≤\ L\ ≤\ 100`) и ширина прямоугольника `W` (`1\ ≤\ W\ ≤\ 10`).
В выходной файл вывести одно целое число – число вариантов замощения L-образной плиткой, прямоугольника размера `L`x`W`.
Если прямоугольник замостить нельзя, то вывести 0.
7. Гонки на выживание
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Автомобили выстроились на стартовой прямой, ревя моторами. 3, 2, 1, старт!
Машины устремились прямо вперед с одинаковой скоростью, но в разных направлениях. Интересно, что это сыпется сзади
автомобилей? Какие-то колючки! Вот один из автомобилей, напоровшись на такую колючку, остановился с проколотыми шинами,
а его водитель грозит кулаком более удачливому сопернику. Необходимо выяснить номера тех машин,
которые уцелеют в такой гонке.
Все машины движутся с одинаковой скоростью только по прямой линии, стартуя
с различных точек стартовой прямой. Если траектории автомобилей пересекаются, то та машина, которая приходит
к точке пересечения раньше, продолжает движение, другая выбывает из соревнования.
Если две машины приходят к точке пересечения одновременно, то движение продолжает та машина,
которая во входном файле идет раньше (номер которой меньше). На рисунке показано, что машины,
начинающие движение в точках с координатой 0, 10 и 50, уцелеют, а машины, стартующие в точках 20, 30, 40, остановятся.
В первой строке входного файла содержится целое число – количество наборов исходных данных `K` (`1\ ≤\ K\ ≤\ 10`).
Далее следует `K` блоков, каждый блок описывает одну гонку. В первой строке блока содержится целое
число – количество машин `N` (`0\ <\ N\ ≤\ 50`), участвующих в гонке. Далее следует `N` строк, в каждой строке содержатся
два целых числа, разделенных пробелом – координата машины на стартовой прямой `X_i` (`0\ ≤\ X_i\ ≤\ 1\ 000\ 000`) и
направление движения машины `A_i` (`1\ ≤\ A_i\ ≤\ 179`, в градусах, см. рис.).
В выходной файл для каждой гонки из входного файла вывести две строки. В первой строке вывести количество
уцелевших машин, а во второй строке номера уцелевших машин в порядке возрастания, разделяя их пробелами.
Машины нумеруются от 0 до `N-1`.
Пример ввода
2
3
0 40
40 40
20 140
6
0 105
40 40
20 30
10 75
30 135
50 75
Пример вывода
2
0 1
3
0 3 5
8. Экономия топлива
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Вы собираетесь поехать на машине за город на пикник, но у вас ограниченный запас топлива. Вы знаете, сколько топлива
в час расходует автомобиль, если ехать на определенной скорости. Напишите программу, которая определяет
максимальное расстояние, на которое можно уехать с заданным количеством топлива. Поездка должна происходить
при постоянной скорости, одной из тех, которая задана.
В первой строке входного файла содержится целое число – количество наборов исходных данных `K` (`1\ ≤\ K\ ≤\ 10`).
Далее следует `K` блоков, каждый блок описывает один набор. В первой строке блока содержатся два целых числа,
разделенных пробелом – количество возможных скоростных режимов вашего автомобиля `N` (`0\ <\ N\ ≤\ 50`) и запас топлива `F`
в миллилитрах (`100\ ≤\ F\ ≤\ 50000`). Далее следует `N` строк, в каждой строке содержатся два целых числа,
разделенных пробелом – скорость вашего автомобиля `S_i` в километрах в час (`5\ ≤\ S_i\ ≤\ 250`) и
расход топлива в миллилитрах за час `C_i` (`1000\ ≤\ C_i\ ≤\ 20000`) при скорости `S_i`.
В выходной файл для каждого набора вывести строку, содержащую одно вещественное число с тремя десятичными знаками –
максимальное расстояние, которое автомобиль сможет проехать с заданным количеством топлива.
Пример ввода
2
1 10000
100 10000
3 40000
100 4000
60 5000
110 4000
Пример вывода
100.000
1100.000
9. Олимпиада
Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод
Послать решение Blockly Посылки Темы Где Обсудить (0)
Напишите программу, генерирующую по результатам отдельных соревнований итоговый рейтинг всех стран.
В первой строке входного файла содержатся целое число – количество соревнований `N` (`0\ <\ N\ ≤\ 50`). Далее следует `N` строк,
каждая строка имеет вид:
`"GGG"` `"SSS"` `"BBB"`
где `"GGG"`, `"SSS"`, `"BBB"` – это трехбуквенные коды стран (3 прописных латинских буквы), получивших соответственно золотую,
серебряную и бронзовую медали. Например, строка "RUS KOR USA" означает, что в данном виде спорта страна с
кодом RUS – получила золотую медаль, KOR – серебряную и USA – бронзовую.
В результатах соревнований появляется не более 50 различных кодов стран.
В выходной файл вывести итоговый рейтинг всех стран в формате:
`"CCC"` `G` `S` `B`
где `"CCC"` – это трехбуквенный код страны, `G` – число золотых медалей, завоеванных этой страной, `S` – число серебряных, `B` – число бронзовых.
Страны нужно выводить в порядке убывания числа золотых медалей, при равенстве числа золотых – в порядке убывания числа
серебряных медалей, при равенстве числа золотых и серебряных – в порядке убывания числа бронзовых медалей, а если и их количество одинаково, то страны должны быть выведены в алфавитном порядке по их трехбуквенному коду.
Пример ввода
4
ITA JPN AUS
KOR TPE UKR
KOR KOR GBR
KOR CHN TPE
Пример вывода
KOR 3 1 0
ITA 1 0 0
TPE 0 1 1
CHN 0 1 0
JPN 0 1 0
AUS 0 0 1
GBR 0 0 1
UKR 0 0 1