Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

nth_element - zadanie SPOJ

Ostatnio zmodyfikowano 2014-08-06 14:24
Autor Wiadomość
killermannnnn
Temat założony przez niniejszego użytkownika
nth_element - zadanie SPOJ
» 2014-08-06 14:24:32
Rozwiązuje zadanie ze SPOJ'a (tutaj treść: pl.spoj.com/problems/KC022/)  i mam problem.

Musze wypisać n-tą co do wielkości liczbę z podanych na wejściu, a jeżeli takiej liczby nie ma musze wupisać "-". Chcę to zrobić za pomoca wektora i funkcji nth_element bo pętla zabiera za dużo czasu.

Problem polega na tym że nie wiem jak napisać instrukcję, gdy n-ta liczba w danym ciągu nie istnieje. Pomoże ktoś ?

C/C++
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <functional>
#include <vector>

using namespace std;

int main()
{
    while( !cin.eof() )
    {
        start:
       
        long long int liczba_szukana;
        cin >> liczba_szukana;
        if( cin.peek() == '\n' )
        {
            cout << "-" << endl;
            goto start;
        }
       
        long long int x;
        vector < int > punkty;
       
        while( cin >> x )
        {
            punkty.push_back( x );
           
            if( cin.peek() == '\n' ) break;
           
        }
       
        if( punkty.size() < liczba_szukana )
        {
            cout << "-" << endl;
            goto start;
        }
       
        nth_element( punkty.begin(), punkty.begin() + 1, punkty.end(), greater < int >() );
        cout << punkty[ liczba_szukana - 1 ] << endl;
    }
}
P-115127
« 1 »
  Strona 1 z 1