Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ну и задачка!!! Попалась такая задача на Паскале,что!!! 
:(
    Опции темы
gdy
  Дата 29.1.2003, 11:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Недавно наткнулся на одну задачи и до сих пор никак не решу! confused.gif
В общем, вот она:
Ограничение по времени: 5 секунд
Ограничение по памяти: 1000K


Теория
База данных Пентагона хранит сверхсекретную информацию. Мы не знаем, что это за информация — она ведь сверхсекретная — зато знаем формат ее представления. Он удивительно прост. По неизвестным нам соображениям все данные кодируются натуральными числами от 1 до 5000. Размер основной базы (обозначим его через N) довольно велик — в ней может содержаться до 100000 таких чисел. База данных должна уметь быстро обрабатывать любые запросы, а самым распространенным из запросов является такой: "какой элемент является i-тым по величине", где i — натуральное число от 1 до N.
Задача
Ваша программа должна выступить в роли диспетчера этой базы данных; другими словами она должна уметь быстро обрабатывать запросы описанного вида.
Исходные данные
Входной файл для этой задачи состоит из двух частей. Сначала в нем записана база данных, потом серия запросов к ней. Формат представления базы данных очень прост: в первой строке записано число N, затем в N следующих строках числа из этой базы по одному в строке и в произвольном порядке. Серия запросов записывается также просто: в первой строке этой серии записано количество запросов K, 1 <= K <= 100, и далее в K строках по одному в строке идут запросы. Запрос «какой элемент является i-тым по величине» записывается для краткости просто одним числом i. База данных отделяется от серии запросов строкой из трех решеток "#".
Результат
Выходной файл должен состоять из K строк, в каждой из этих строк должен быть записан ответ на соответствующий запрос. Ответом за запрос "i" является элемент из базы, который идет в ней i-тым по величине, считая с наименьшего.
Пример исходных данных
5
7
121
123
7
121
###
4
3
3
2
5

Пример результата
121
121
7

Если кто знает ак к ней подойти подскажите, пожалуйста.
  Вверх
December
Дата 29.1.2003, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Antitheorist
****


Профиль
Группа: Участник
Сообщений: 4423
Регистрация: 14.8.2002
Где: Харьков

Репутация: нет
Всего: 57



1. Что делает задача на паскале в форуме по асму, если ей место в "Технологии и алгоритмы"?
2. Проблема в скорости, памяти или решении вообще?


--------------------
Для друзей с винграда - скидки на разработку сайтов
PM MAIL WWW ICQ   Вверх
Chingachguk
Дата 29.1.2003, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: 1
Всего: 18



Что-то я не очень понял условие. Верно ли то, что задача сводится к выбору из неотсортированного массива целых чисел от 1 до 5000, например такого (те это и есть база данных ? Одна запись базы - одно число ?):

...
48 ; k-ая запись базы
15 ; k+1-ая запись базы
256
4371
15
165
...

элемента с номером i, причем выбор нужно уже осуществлять из как бы отсортированного массива ?

Если массив отсортирован, то выборка (запрос) однозначен. Или все не так ?



--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
dim
Дата 29.1.2003, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 24.12.2002

Репутация: нет
Всего: нет



Если я правильно понял постановку, то задача заключается в том чтобы упорядочить входную последовательность (базу). Задача значительно упрощается поскольку значения входных чисел лежат в диапазрне 1-5000. Т.е. нам достаточно выделить некий первичный массив размерностью в 5000, индексами в котором будут служить входные числа, а значениями - кол-во вхождений конкретного числа. За первый проход у нас уже получиться упорядоченная, но разреженная последовательность (в ней будут дырки, и еще будут не известны реальные позиции, поскольку некоторые элементы могут встречаться несколько раз). За второй проход мы строим из этого массива второй (на первом проходе мы подсчитываем общее количество элементов, т.е. размерность второго - по ограничениям задачи он не должен быть больше 2 * 100000 = 200000 byte), в котором расставляем элементы по своим местам простым обходом первого массива.
--------------------
that's all
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0395 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.