В heapify () вы используете
swap(smallest,arr[i]);
, который обменивает значения в наименьшее и arr [i]. Но arr [l (i)] или arr [r (i)] не изменяется. На самом деле это копирует меньшее значение arr [l (i)] и arr [r (i)] в arr [i].
Также в основном вы делаете
for (int i = 0; i < k - 1; i--) {
, который отсчитывает i до достижения INT_MIN вместо того, чтобы считать до k. Это быстро приводит к тому, что куча становится пустой, а код перестаёт работать.
PS: почему бы не использовать std :: make_heap и friends?
Они - очень отличающиеся звери.
mod_fastcgi (между прочим, mod_fcgid рекомендуется), просто поддерживает протокол FCGI для выполнения CGIs быстрее с некоторыми кнопками для управления, сколько процессов будет он работать simutaneously и не намного больше.
mod_perl, с другой стороны, платформа для разработки приложений, которая выставляет большинство внутренностей Apache Вам так, можно настроить каждую кнопку веб-сервера из кода, ускоряет CGIs, и многое другое.
Если все, чего Вы желаете, должно выполнить Ваш CGIs быстро и хотеть поддерживать как можно больше хостов, необходимо придерживаться поддержки тех двух способов выполнить код и вероятно стандартный CGI также.
Если Вы заботитесь о максимальной производительности за счет гибкости, Вы могли бы стремиться к единой платформе, вероятно, mod_perl.
Но вероятно самая нормальная опция состоит в том, чтобы работать везде и использовать платформу для создавания приложения, которое это будет заботиться об использовании преимуществ конкретного способа выполнить если существующий, как Катализатор.
Я советовал бы Вам использовать платформу, такую как Катализатор, который заботится о таких деталях. Для большинства приложений не имеет значения, как программа соединяется с веб-сервером, пока это сделано эффективным способом. Выбор между mod_perl и FastCGI должен быть сделан системным администратором, который развертывает его, не разработчик.