Na pierwszy rzut oka iterowanie masz w porządku. Według mnie błąd masz w samej logice. Być może źle interpretujesz treść zadania, bo jest trochę pogmatwana (chociaż przykładowe testy powinny rozwiać wszelkie wątpliwości). Ewentualnie (aczkolwiek w to raczej wątpię) nie wiesz do końca jak działa set.
Kod powinien wyglądać jakoś tak:
if (ciag.size() < pozycja) {
cout << '-' << '\n';
} else if (ciag.size() == pozycja) {
cout << *ciag.cbegin() << '\n';
} else {
set<int>::iterator it = ciag.cend(); // auto it = ciag.cend();
while (pozycja--) it--;
cout << *it << '\n';
}
Prawdopodobnie masz jeszcze coś nie tak z wczytywaniem danych. Jest trochę udziwnione, więc nie chciało mi się go sprawdzać. Wkleiłem wczytywanie z mojego kodu i przeszło. Użyj std::getline i std::istringstream (do rozdzielenia łańcucha na liczby). Dodatkowo w tym przypadku lepiej nadałby się std::vector zamiast std::set.
Dzięki twojej korekcie przynajmniej dla przykładu testowgo mam dobre wyniki. THX. Niestety dalej WA.
Założenie miałem takie żeby mieć posortowane dane bez dublikatów i iterować od wartości max do wymaganej (o ile to możliwe). Uznałem że najlepszy będzie set
bo już przy wpisaniu znikną dublikaty i będzie posortowane.
Dlaczego uważasz że vector
będzie lepszy? Dojdą przecież dwie operacje które mogą znacznie wydłużyć czas przy większej liczbie danych. (choć vector jest moim ulubionym STL)
Jeżeli chodzi o std::getline i std::istringstream to chciałem spróbować bez striga żeby było szybciej ale chyba przejdę na twoje.
Dzięki.
PS właśnie zrobiłem jak sugerowałaś getline + istringstream = AC, dzięki
@nenow79 wstawianie i wyszukiwanie elementów dla setu ma złożoność logarytmiczną. To się kumuluje i w konsekwencji zajmuje więcej czasu. Nie bez przyczyny set nie ma iteratora z dostępem losowym. Trochę bardziej sensowne jest wstawianie danych do std::unordered_set (hashed & unsorted) z następnym przekopiowaniem go do vectora i sortowaniem.
Gdy chcemy wstawiać dużo elementów na koniec, nie będziemy nic usuwać, ale chcemy w miarę szybko sortować i mieć dostęp losowy to najlepszy jest sam vector.
@narbej nawet tego nie zauważyłem. Muszę przyznać rację
Suggested Topics
Topic | Category | Replies | Views | Activity |
---|---|---|---|---|
MBPROB01 - History version in plaintext pl.spoj.com | Zbiór zadań | 6 | 152 | Jul '24 |
FR_20_02 - Poszukiwacze skarbów - Błąd w testach? | Zbiór zadań | 1 | 75 | Apr 2 |
PP0504B - StringMerge - w języku C | Zbiór zadań | 5 | 187 | Jun '24 |
TFRACAL - Kalkulator ułamków | Zbiór zadań | 2 | 125 | Feb 1 |
TOPSORTL - Porządek leksykograficzny w grafie | Zbiór zadań | 3 | 127 | Jul '24 |