Zadanie z sortowania liczb - u mnie działa, na platformie nie przyjmuje

0

Hej,
uczę się programować (biorę udział w "Programowanie na start" - jest to chyba bardziej kurs niż konkurs, więc nie powinno być problemów z Waszą pomocą :) ). Zmagam się z tym zadaniem. Opracowałem do tego kod. U mnie działa, a na platformie nie przyjmuje. Prosiłbym o naprowadzenie o co może chodzić.

 
#include <iostream>
#include <stdlib.h>
using namespace std;

int compare (const void * a, const void * b)
{
  return ( *(int*)a - *(int*)b );
}


int main()
{
    int l, k, p = 1;
    cin >> l >> k;
    int *tab = new int[l];
    for (int i = 0; i < l; i++)
        cin >> tab[i];
    qsort(tab, l, sizeof(int), compare);
    if (k == 1)
        cout << tab[l - 1] << endl;
    else
    {
        while (p <= k)
        {
            cout << tab[l - 1] << endl;
            l--;
            p++;
        }
    }
}

Dziękuję za pomoc i pozdrawiam :)

0

3 pierwsze testy przechodzi pomyślnie, jednak na kolejnych mam "błąd uruchomienia".

0

Treść zadania poproszę, bez logina i hasła podstrony nie wyświetli. Swoją drogą jesteś pewien że liczby mieszczą się w int-cie?

0

Przechwytywanie.PNG

0

Wczytujesz wszystkie liczby do tablicy, później ją sortujesz i dopiero wypisujesz - to pochłania sporo niepotrzebnego czasu i może być powodem tych "błędów uruchomienia"; to zadanie można wykonać bez sortowania czy też wczytywania wszystkich liczb, pomyśl jak i napisz jak dojdziesz do jakiegoś wniosku (bądź też nie :P).

1

Lepiej byłoby utworzyć 1001 elementową tablicę i zliczać ilość wystąpień poszczególnych liczb podczas wczytywania. Później wypisać kolejne począwszy od 1000 w dół, każdą tyle razy ile wynosi wartość komórki w tablicy. Wypisywanie kończyć, gdy wypiszemy K liczb

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