Załóżmy, że mamy do zestawu na N koderów.
Każdy Coders ma ocenę liczbę złotych medali E i , które do tej pory zdobyli.
Firma programistyczna chce zatrudnić dokładnie trzech programistów do opracowania aplikacji.
Aby zatrudnić trzech programistów, opracowali następującą strategię:
- Najpierw układają kodery w kolejności rosnącej i malejącej względem złotych medali.
- Z tej uporządkowanej listy wybierają trzy środkowe kodery. Na przykład, jeśli lista jest umieszczony wybierają ( 2 , 3 , A 1 ) koderów.
Teraz musimy pomóc firmie, pisząc program do tego zadania.
Wejście:
Pierwszy wiersz zawiera , tj. Liczbę koderów.
Potem drugi wiersz zawiera wskaźniki od I th koder.
Trzecia linia zawiera liczbę złotych medali zgromadzonych przez tego programistę.
Wynik:
Wyświetl tylko jedną linię, która zawiera sumę złotych medali zdobytych przez trzech programistów, których wybierze firma.
algorithms
algorithm-design
Jacek
źródło
źródło
Odpowiedzi:
Jest to problem wyboru tego najmniejszego elementu z listy, rozwiązany przez klasę algorytmów zwanych Algorytmami Selekcji . Istnieją deterministyczne algorytmy liniowego wyboru czasu, dzięki czemu problem można rozwiązać w czasie liniowym, wybierając n / 2 , n / 2 - 1 , n / 2 + 1 najmniejsze elementy z oryginalnej nieposortowanej listy.k n/2,n/2−1,n/2+1
źródło