fork download
  1. template<class Item>
  2. class PQ{
  3. private:
  4. Item *pq; /*Массив элементов*/
  5. int n; /*Текущее оличество элементов в очереди*/
  6. int max; /*Максимальное количество элементов в очереди*/
  7. int min_elem; /*Индекс минимального элемента в отсортированном массиве*/
  8. public:
  9. PQ(int max){
  10. pq = new Item[max];
  11. n = 0;
  12. this->max = max;
  13. /*Только для версии на основе отсортированного массива:*/
  14. min_elem = 0;
  15. }
  16.  
  17. ~PQ(){
  18. delete[] pq;
  19. }
  20.  
  21. int empty() const{ return n == 0; }
  22.  
  23. /*Функция добавления элемента, поддерживающая упорядоченность массива*/
  24. void insert(Item item){
  25. if(n+1 <= max){
  26. int location = n - 1;
  27.  
  28. while(location >= 0 && pq[location] > item){
  29. pq[location + 1] = pq[location];
  30. location = location - 1;
  31. }
  32. pq[location + 1] = item;
  33. n++;
  34. }
  35. //pq[n++] = item;
  36. }
  37.  
  38. /*Item getmax(){
  39. int max = 0;
  40.  
  41. for(int i = 1; i < n; i++)
  42. if(pq[max] < pq[i])
  43. max = i;
  44. std::swap(pq[max], pq[n-1]);
  45. return pq[--n];
  46. }
  47.  
  48. Item getmin(){
  49. int min = 0;
  50.  
  51. for(int i = 1; i < n; i++)
  52. if(pq[min] > pq[i])
  53. min = i;
  54. std::swap(pq[min], pq[n-1]);
  55. return pq[--n];
  56. }*/
  57.  
  58. /*Реализация функций getmax и getmin для очереди, которая упорядочивает свой массив*/
  59. Item getmax(){
  60. return pq[--n];
  61. }
  62.  
  63. Item getmin(){
  64. return pq[min_elem++];
  65. }
  66. };
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
/usr/lib/gcc/i586-linux-gnu/5/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: error: ld returned 1 exit status
stdout
Standard output is empty