![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
c-ch |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
Точки и отрезки
(Время: 2 сек. Память: 16 Мб Сложность: 62%) Дано N отрезков на числовой прямой и M точек на этой же прямой. Для каждой из данных точек определите, скольким отрезкам она принадлежит. Точка x считается принадлежащей отрезку с концами a и b, если выполняется двойное неравенство min(a, b) <= x <= max(a, b). Входные данные Первая строка входного файла INPUT.TXT содержит два целых числа N – число отрезков и M – число точек (1 <= N, M <= 10^5). В следующих N строках по два целых числа ai и bi – координаты концов соответствующего отрезка. В последней строке M целых чисел – координаты точек. Все числа во входном файле не превосходят по модулю 10^9. Выходные данные В выходной файл OUTPUT.TXT выведите M чисел – для каждой точки количество отрезков, в которых она содержится. ПРИМЕРЫ 3 2 0 5 -3 2 7 10 1 6 ответ 2 0 1 3 -10 10 -100 100 0 ответ 0 0 1 Моя идея проста: сначала сортируем точки по координате, затем точки с одинаковой координатой сортируем по типу К сожалению, этот вариант не проходит автоматическую систему проверки по времени (~+0,5сек) ![]() Самого теста у меня нет Вероятно, надо прикрутить упорядочивание по типу точки в процедуру сортировки по координате, но я не представляю, как это сделать... А может ещё какой-то вариант есть? Времени у меня как всегда впритык ![]()
Заранее спасибо Сообщение отредактировано: c-ch - 5.04.2009 20:18 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Цитата время улучшилось на пару сотых секунды Да? У меня время уменьшилось с 8 секунд изначальных (n = m = 105, случайные данные) до 0.06 сек после внесения изменений... Что-то у тебя не то происходит... |
passat |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 32 Пол: Мужской Репутация: ![]() ![]() ![]() |
Координаты отрезков записываем в массив. Держим вспомогательный признак: начало отрезка +1, конец -1. Сортируем массив. Сортируем массив точек. Дольше идем от наименьшего в двух массивах. Сумма +1 будет давать количетво отрезков, которым принадлежит точка.
Такой алгоритм подойдет? |
![]() ![]() |
![]() |
Текстовая версия | 12.08.2025 6:21 |