0 / 0 / 0
Регистрация: 08.04.2016
Сообщений: 1
1

Вывести количество элементов в массиве a[i], которые не меньше b[j]

08.04.2016, 23:57. Показов 677. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте всем! Помогите решить задачу.
В первой строке дано n чисел. Во второй строке сами эти числа, разделенные пробелом (массив a[i]). В следующей строке число m. В последней строке массив b[j], состоящий из m элементов.

Для каждого b[j] требуется вывести количество элементов в массиве a[i], которые не меньше b[j]. Если в массиве a[i] находится такой элемент (т.e. больший или равный чем b[j]), то из него нужно вычесть 1, иначе ничего не делать. Каждое число вывести в новой строке.
1<=n<100000
1<=a[i]<10^9
1<=m<100000
1<=b[i]<10^9
Ограничение по времени 2с.
Пример входных данных
3
3 1 1
2
1 1
Выходные данные
3
1

Добавлено через 10 минут
Программу напишу сам. Не могу уложиться во время. Может кто идею подскажет?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2016, 23:57
Ответы с готовыми решениями:

В одномерном массиве определить и вывести на экран количество элементов, которые меньше левого, но больше прав
В одномерном массиве определите и выведите на экран количество элементов, которые меньше левого, но...

Найти количество элементов в массиве которые меньше чем k
Дано масив M и k . Найти количество елементов которые меньше чем k.

Найти в массиве вещественных чисел количество элементов, которые меньше среднего среди элементов
Для заданного массива вещественных чисел найти количество элементов, каждый из которых меньше...

В массиве определите количество элементов, которые меньше заданного значения М
В массиве A(N) определите количество элементов, которые меньше заданного значения М.

3
14 / 14 / 11
Регистрация: 20.03.2016
Сообщений: 168
12.04.2016, 00:36 2
Идея такая: берешь и в цикле "перебираешь" все элементы одного массива, а во внутреннем цикле "перебираешь" элементы второго массива и сравниваешь элементы.
Если необходимое условие соблюдается, выполняешь нужные действия.

п.с. Если эта подсказка не помогла, берешь листик бумаги, записываешь на него два произвольных массива чисел и начинаешь "вручную" выполнять заданную задачу, каждое выполняемое действие записываешь последовательно на бумаге, пока полностью не выполнишь задачу. Потом анализируешь свои записи и составляешь блок-схему или алгоритм.
0
0 / 0 / 0
Регистрация: 15.04.2016
Сообщений: 1
15.04.2016, 13:51 3
Цитата Сообщение от Chilipalmer777 Посмотреть сообщение
Идея такая: берешь и в цикле "перебираешь" все элементы одного массива, а во внутреннем цикле "перебираешь" элементы второго массива и сравниваешь элементы.
Если необходимое условие соблюдается, выполняешь нужные действия.
В условии стоит ограничение по времени и поэтому решение "в лоб" не поможет. Нужен какой-то алгоритм...
0
14 / 14 / 11
Регистрация: 20.03.2016
Сообщений: 168
15.04.2016, 18:13 4
CoderD, есть несколько ньюансов, которые не позволят применять "извращения"(типа распараллеливания процессов как в PascalABC.NET) для решения задачи в данном случае. А именно:

1. Насколько я помню, Турбо паскаль не поддерживает настоящую многозадачность, а также не имеет встроенных навороченных подпрограмм для работы с массивами.
2. Возьмите максимальное количество элементов согласно условия задачи(100.000). Сколько операций сравнения нужно выполнить - 10 млрд. операций за отведенное время.
3. Вам даны два "абстрактных"(неупорядоченных) массива размером 100.000 элементов. Даже если они будут отсортированы - это не особо поможет в данной задаче, т.к. нужно суммировать(подсчитывать количество) элементы, удовлетворяющие условию задачи.
3. Компилятор Турбо паскаля - не самый быстрый компилятор на свете и это значит, что производительность выполняемых в нем математических операций не будет равна теоретической величине(скорости) выполнения процессором математических операций в секунду.

Возникает вопрос - какой должна быть производительность компьютера для вычисления 10млрд. мат.операций сравнения плюс Х операций суммирования(подсчета количества) для каждого элемента массива А[i]>=B[j]) плюс Х операций по "вычитанию единицы" плюс Х операций вывода данных на экран. И всё это за 2 секунды(с учетом вышеизложенного)?

Конечно, для ускорения всего процесса можно написать ассемблерные "вставки", которые воспринимает Турбо паскаль, но для этого нужно шарить в Ассемблере.

п.с. Для прикола(а точнее для оценки реальной производительности вашего ПК), можете создать 2 массива по 100.000 случайных элементов и попробовать решить задачу "в лоб". А в процессе выполнения, в начале и в конце - вывести на экран системное время с учетом миллисекунд. И посмотреть время выполнения задачи. :-)
0
15.04.2016, 18:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2016, 18:13
Помогаю со студенческими работами здесь

В массиве A(N) определите количество элементов, которые меньше заданного значения М
В массиве A(N) определите количество элементов, которые меньше заданного значения М. Использовать...

В массиве A (N) определите количество элементов, которые меньше заданного значения М
Условие: в массиве A(N) определите количество элементов, которые меньше заданного значения М. Мой...

В полученном массиве определите количество элементов, которые меньше заданного значения М
Задан массив А (N). Добавить массив С(К). Выполнить обменную сортировку. В полученном массиве ...

В массиве Х(N) найти количество элементов, которые меньше значения среднего арифметического
2. В массиве Х(N) найти количество элементов, которые меньше значения среднего арифметического...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru