Witam,
Mam do napisania program o treści:
Zaimplementuj kopiec maksymalizujący i następujące operacje na nim:
- nr v
dodanie do kopca o numerze nr liczby v
- nr
usunięcie z kopca o numerze nr maksimum i wypisanie go na ekran
p nr
wypisanie wszystkich elementów z kopca w kolejności, w jakiej znajdują się w tablicy
r nr n v1 ...vn
usunięcie z kopca o numerze nr wszystkich elementów i wpisanie do niego n nowych, o wartościach v1 ...vn
j a b
złączenie kopców a i b; w wyniku kopiec a powinien zawierać wszystkie elementy z obu kopców, kopiec b powinien być pusty
q
zakończenie programu
Numerami kopców będą liczby 0, 1, ..., 9. Rozmiar żadnego kopca nie przekroczy 8192 elementów.
Wejście
Na wejściu pojawi się ciąg poleceń w przedstawionym wyżej formacie. Ostatnim poleceniem będzie polecenie q.
Wyjście
Na wyjściu należy wypisać wynik poleceń - i p.
na razie mam coś takiego:
#include <cstdlib>
#include <iostream>
#include <time.h>
using namespace std;
int main(int argc, char *argv[])
{
const int N = 7;
int i,j,k,x;
int d[N+1]={7,1,9,6 ,5, 8, 10};
for(i = 2;i <= N; i++)
{
j = i; k = j / 2;
x = d[i];
while((k > 0) && (d[k] < x))
{
d[j] = d[k];
j = k; k = j / 2;
}
d[j] = x;
}
x = (N + 1) / 2; k = 2;
for(i = 1; i <= N; i++)
{
for(j = 1; j <= x - 1; j++) cout << " ";
cout << d[i];
for(j = 1; j <= x; j++) cout << " ";
if(i + 1 == k)
{
k += k; x /= 2; cout << endl;
}
}
cout << endl << endl;
I coś to źle wypisuje, mógłby mi ktoś powiedzieć dlaczego?