Supposons que nous ayons un ensemble de N codeurs.
Chaque codeur a la cote et le nombre de médailles d'or E i qu'il avait remportées jusqu'à présent.
Une société de logiciels souhaite embaucher exactement trois codeurs pour développer une application.
Pour embaucher trois codeurs, ils ont développé la stratégie suivante:
- Ils classent d'abord les codeurs par ordre croissant de notes et par ordre décroissant de médailles d'or.
- Dans cette liste organisée, ils sélectionnent les trois codeurs intermédiaires. Par exemple, si la liste organisée est ils sélectionnent ( a 2 , a 3 , a 1 ) des codeurs.
Nous devons maintenant aider l'entreprise en écrivant un programme pour cette tâche.
Contribution:
La première ligne contient , c'est-à-dire le nombre de codeurs.
Ensuite, la deuxième ligne contient les notes du i ème codeur.
La troisième ligne contient le nombre de médailles d'or mises en sac par le ème codeur.
Production:
N'affichez qu'une seule ligne contenant la somme des médailles d'or gagnées par les trois codeurs que l'entreprise sélectionnera.
Réponses:
Il s'agit d'un problème de sélection du ème plus petit élément de la liste résolue par une classe d'algorithmes appelés les algorithmes de sélection . Il existe des algorithmes déterministes de sélection du temps linéaire afin que votre problème puisse être résolu en temps linéaire en sélectionnant le n / 2k ème plus petits éléments de la liste non triée d'origine.n / 2 , n / 2 - 1 , n / 2 + 1
la source