1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| c-ch |
5.04.2009 10:25
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: 1 |
Точки и отрезки
(Время: 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 |
6.04.2009 16:33
Сообщение
#2
|
|
Гость |
Цитата время улучшилось на пару сотых секунды Да? У меня время уменьшилось с 8 секунд изначальных (n = m = 105, случайные данные) до 0.06 сек после внесения изменений... Что-то у тебя не то происходит... |
| passat |
6.04.2009 16:54
Сообщение
#3
|
|
Новичок ![]() Группа: Пользователи Сообщений: 32 Пол: Мужской Репутация: 0 |
Координаты отрезков записываем в массив. Держим вспомогательный признак: начало отрезка +1, конец -1. Сортируем массив. Сортируем массив точек. Дольше идем от наименьшего в двух массивах. Сумма +1 будет давать количетво отрезков, которым принадлежит точка.
Такой алгоритм подойдет? |
c-ch Задача про точки и отрезки 5.04.2009 10:25
c-ch ещё один вариант сделал: разводим начала и концы о... 5.04.2009 19:59
Lapp Вроде и сортировка и поиск достаточно быстрые, но ... 6.04.2009 1:36
c-ch конкретно этот кусок я исправил ветвлением, спасиб... 6.04.2009 6:53
volvo c-ch
Насколько я вижу, у тебя вся проблема - в реа... 6.04.2009 10:37
c-ch время улучшилось на пару сотых секунды :)
но этого... 6.04.2009 16:22
passat Точнее, даже так. Все сливаем в один массив. ВВоди... 6.04.2009 17:34
c-ch я лишь привёл цифры, которые дала система проверки... 6.04.2009 16:43
c-ch конечно :)
в первом посте именно такой вариант :)
... 6.04.2009 17:46
volvo Может, ты все-таки дашь ссылку на сервер, на котор... 6.04.2009 17:55
c-ch пожалуйста: http://acmp.ru/index.asp?main=task... 6.04.2009 17:57
volvo Я ничего с этим сервером не понимаю :wacko: Была ... 7.04.2009 16:13
volvo Бррр... Да, сам виноват, посчитал, что в паре коор... 7.04.2009 20:43
c-ch да, спасибо :смайлик_с_пивом: 9.04.2009 14:08![]() ![]() |
|
Текстовая версия | 10.12.2025 20:07 |