Przez chwilę kusiło mnie by stwierdzić, że uznanie Twojego kodu za coś tragicznego brzmi trochę jak uznanie Hitlera za judeosceptyka, ale jednak nie jest tak źle
Pytanie dlaczego w ogóle odniosłem wrażenie, że może być tak źle?
1) Przyzwyczajaj się do angielskich nazw zmiennych i ogólnie do inglisza. W programowaniu nie brakuje międzynarodowych grup pracujących nad jakimś kodem, a patriotyzm sprowadza się do tego, że program jest kojarzony z konkretnym krajem, jak Windows z USA
Polskie nazwy zmiennych są przestarzałe i należy się ich absolutnie wystrzegać.
2) Sortowanie bąbelkowe jest beee. Może być na start, ale no... ja przy tym zadaniu zaklepałem chyba pierwszy i na pewno jeden z ostatnich razy w życiu quicksorta. Tobie również to zalecam.
3) Dwa sortowania babelkowe? Nie lepiej jedno sortowanie i zmienna bool określająca czy sortowanie ma być rosnące czy malejące? To dużo mniej kodu... i dużo lepszy nawyk na przyszłość. Metoda copy-paste oczywiście na SPOJu przejdzie, ale nie jestem pewien czy rozumiesz jak krytyczny błąd właśnie popełniłeś i dlaczego. W dużym uproszczeniu programowanie polega na pisaniu logicznych i zrozumiałych rzeczy, a wiele programów użytkowych to setki tysięcy linii kodu. Jeżeli będziesz miał tabelę zawierającą 20 kolumn to nie zrobisz przecież 20 funkcji odpowiedzialnych za jej sortowanie kolejno wg pierwszej drugiej, ..., dwudziestej kolumny. W takim przypadku wyślesz do funkcji odpowiedniego inta, który powie wg której kolumny należy wykonać sortowanie. Podobnie tutaj - zmienna bool powie czy posortować to malejąco czy rosnąco.
4) if((1<=d) && (d<=500)) - wywal to dziadostwo (inne tego rodzaju syfy ofc też). Na SPOJu wychodzisz z założenia, że autor przestrzega specyfikacji wejścia. Jeżeli autor tego nie robi to masz wszelkie podstawy by uznać że zadanie jest beee i nie warto tracić na nie czasu. Sam powiedz, skoro autor mówi, że liczby na wejściu będą np. mniejsze niż 100 a są większe niz 1000000 to czy warto wierzyć mu na słowo, że zadanie polega np. na ich posortowaniu w kolejności rosnącej? Jeżeli ktoś nie umie określić wejścia do programu to co dopiero opisać co ten program ma robić... szczęśliwie na SPOJu mało jest zepsutych zadań / nie ma zepsutych zadań więc po prostu ify tego rodzaju wyrzucasz i jest fajnie 
5) Wywal też okomentowane fragmenty kodu. Rozumiem, że pomagały Ci one w analizie efektów Twojej pracy - ok. Ale mi i każdemu innemu utrudniają debugowanie programu. Komentarz ma być krótki, jak jest to w Twoich procedurach sortujących. Wszelkie cout << "Podaj liczbe zawodnikow: " << endl; przeszkadzają w odczytaniu Twoich intencji.
6) Jeżeli piszesz kod na zmiennych globalnych to ok. Oczywiście to tragedia i porządne kody raczej nie zawierają zmiennych globalnych, ale na SPOJu jest to jednak dopuszczalne jeżeli nie zalecane i trudno nazwać to uchybieniem. Jednak jeżeli już używasz zmiennych globalnych to używaj ich raz a porządnie, bo unsigned int *tablica w mainie utrudnia zrozumienie kodu i jest to proszenie się o błąd.
7) Skoro korzystasz ze zmiennych globalnych, np unsigned int n=0 to po co wysyłasz n do funkcji jako argument? To bez sensu...
8) tablica2[r] = tablica[r + ile_razy]; - prosisz się o guza. Valgrind szaleje więc wg mnie nawet udało Ci się go nabić
Generalnie: r = N a tablica2 jest rozmiaru N. Jak wiesz, tablice numerowane są od zera. W związku z tym tablica tab[5] ma 5 elementów: 0, 1, 2, 3, 4. Ostatni element takiej tablicy to tab[4]. W ogólności, dla naturalnego n tab[n] ma n elementów, a ostatni element to tab[n-1]. Odwołując się do tablica2[r] już próbujesz wywalić pamięć, choć jeszcze jej nie wywalasz - wszak to tylko zadania łatwe. Jednocześnie ile_razy jest >= 0 więc już w ogóle bawisz się np mając tab[5] i pisząc w elemencie tab[5+3]... W sumie nie zdziwiłbym się gdyby analiza tego fragmentu kodu rozwiązała Twój problem. Jednak jest późno więc ja rezygnuję 
9) Komentarze, o czym dowiesz się także tutaj https://google.github.io/styleguide/cppguide.html to nie jest byle co. Twój komentarz ma być cenną wskazówką. Dlaczego jeden komentarz piszesz wielkimi literami a inne małymi? Przez pewien czas sądziłem, że po prostu stworzyłeś coś tak dzikiego i genialnego że muszę przeczytać kod trzy razy nim to zrozumiem. Nie wiem co gorsze: to, że komentarz iż sortujesz coś malejąco dotyczy instrukcji N = n - ile_razy; czy to, że jest z wielkiej litery. Szczerze - nie mam pojęcia co i jakim cudem sortuje N = n - ile_razy, ale ostatecznie wychodzi na to że napisałeś komentarz który jedynie wprowadza w błąd bo żadnego sortowania nie ma. Do tego napisałeś to wielkimi literami przez co ktoś czyta komentarz zamiast kodu i zastanawia się co też autor miał na myśli...
10) Zeruj zmienne na początku a nie na końcu. Twoje podejście oczywiście też jest formalnie rzecz ujmując ok, ale lepiej czyta się kod widząc "o! Tu zeruję zmienną i dalej jej używam". Trochę mi zajęło zauważenie, że robisz to dopiero na końcu.
11) Jest późno więc powiem Ci jak szybko to naprawić by dostać AC: usuń wszystkie delete
A na przyszłość wiesz już co poprawić.
PS
No właśnie, jest późno i po przeczytaniu tego co napisałem uważam, że nie jest to tak logiczne i słuszne jak mi się wydawało. Ściślej - to co napisałem nie oddaje moich myśli. Ale trudno - zadań na SPOJu nie brakuje więc sam się z czasem wszystkiego nauczysz. Jak czegoś nie rozumiesz w mojej wypowiedzi to uznaj że godzina 1:40 w nocy nie służy używaniu mózgu i pomiń to 