Kopiec podstawy

0

próbuję napisać program że strony: https://www.spoj.pl/DYDEK/problems/JTWKOPC/
dla leniwych oto treść ;)

Napisz program, który z podanego ciągu liczb utowrzy kopiec, a następnie po każdorazowym podaniu liczby ponownie utworzy nowy kopiec. Kopiec należy tak ułożyć, żeby największy element znajdował się w korzeniu, a dla każdego węzła wartości jego potomków były mniejsze bądź równe jego wartości.
Input

W pierwszym wierszu znajduje się dodatnia liczba naturalna n nie większa od 100 oraz ciąg liczb naturalnych a1, a2, ..., an. W kolejnych t wierszach znajduje się jedna liczba naturalna bt, gdzie t - dodatnia liczba naturalna nie większa niż 1000.
Output

W każdym z t+1 wierszy znajduje się ciąg liczb całkowitych podanych na wejściu ułożonych w kopiec.

W pierwszym wierszu podany jest kopiec {Kn}, który składa się z ciągu liczb podanych na wejściu a1, a2, ..., an.
W drugim wierszu podany jest kopiec {Kn+1}, który składa się z ciągu liczb {Kn} oraz liczby b1.
W trzecim wierszu podany jest kopiec {Kn+2}, który składa się z ciągu liczb {Kn+1} oraz liczby b2.
...
W t-wierszu podany jest kopiec {Kn+t}, który składa się z ciągu liczb {Kn+t-1} oraz liczby bt.
Example
Input:
5 4 12 6 7 8
10
26
4
6
Output:
12 8 6 7 4
12 8 10 7 4 6
26 8 12 7 4 6 10
26 8 12 7 4 6 10 4
26 8 12 7 4 6 10 4 6

I w uważam, że mój program działa w 100%, ale znając życie spoj, pokazuje coś innego ;/

 #include <iostream>
#include <algorithm>
#include <vector>

#define maxx 100000

using namespace std;
 
int kol[maxx];
int k,n,t;

void wyp(){
	for(int i=1;i<=n;i++)
		cout<<kol[i]<<" ";
	cout<<endl;
}

int main(){
	cin>>n;
	kol[0]=2000000000;
	for(int i=1;i<=n;i++){
		cin>>kol[i];
		int poz=(i)/2,poz2=i;
		while(kol[poz]<kol[poz2]){
			swap(kol[poz],kol[poz2]);
			poz/=2;poz2/=2;
			
		}
	}
	for(int i=2;i+1<=n;i+=2)
		if(kol[i]<kol[i+1] && kol[2*i]==0 && kol[2*i+2]==0)
                                     swap(kol[i],kol[i+1]);
	wyp();
	while(cin>>k > 0){
		kol[++n]=k;
		int poz=(n)/2,poz2=n;
		while(kol[poz]<kol[poz2]){
			swap(kol[poz],kol[poz2]);
			poz/=2;poz2/=2;
			
		}
		wyp();
	}
}

Proszę o wskazanie jaki błąd mam.

 
0

Masz spację po każdej liczbie, a po ostatniej (liczbie w danym wierszu) nie powinno jej być.

0

czyli, wg Ciebie mój kod dodawania jest poprawny ?
btw, usunąłem spację z końca linii i nadal WA

0

To pewnie jest jakiś przypadek brzegowy którego nie bierzesz pod uwagę czy coś. Kodu nie analizowałem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1