0

Я отправляю свой код на одного из онлайн-судей. Моя программа принимается. Однако для части моей программы требуется массив длинного целого числа из почти 10000 элементов. Размер вводится судьей во время выполнения. я динамически выделять память с помощью:Альтернатива динамическому распределению памяти?

int *array = new int[size]; 

Но это съедает много времени во время выполнения. Мое время выполнения плохое, что приводит к плохому рангу. Есть ли возможно FASTER чередуется с динамическим распределением с учетом требований программы?

Я не знаю, почему, но создание массива статически (который я думаю, что это плохая идея) с помощью

int array[10000]; 

дает мне «ошибка выполнения (нарушение прав доступа)» в

PS : Я просто новичок.

+1

Вы уверены, что распределение будет, Что занимает большую часть времени выполнения? – mclaassen

+0

Вы измеряли время всей вашей программы и время выделения (новый int [размер])? – Yotam

+0

Если я выделяю память статически, моя программа успешно обрабатывает 10 тестовых случаев с временем выполнения 0,015 с, а выделение памяти составляет 0,125 с. – lazygeek

ответ

0

Распределение памяти - сравнительно дешевая операция. Если вы не делаете это миллион раз подряд, это вряд ли будет иметь место в вашей производительности. Если, конечно, вы не выделяете столько памяти, что требуется постоянная замена на диск, но я сомневаюсь, что приложение для конкурса потребует использовать столько памяти.

0

10000 long ints на самом деле не так много памяти для современных компьютеров. Вы должны уметь выделять сто раз больше в милисекундах на любом персональном компьютере.

Однако ошибка выполнения, которую вы получаете при распределении статически, означает, что, вероятно, ваша программа пытается использовать более 10000 значений из массива. Поэтому, возможно, судья выделяет массив более 10000 в динамическом распределении?

Попробуйте сделать статический массив большего размера (помните, что Milion тоскует всего несколько мегабайт) и проверить, если ошибка времени выполнения по-прежнему происходит

Смежные вопросы