Trouver et trier
Titre: Entrez (utilisateur, des résultats) séquence peut être obtenue de haut en bas ou de bas grade à ordre élevé, les mêmes résultats
ont été traités conformément à la règle d'agencement d'entrée précédent.
Une description:
Entrez plusieurs lignes, entrez d' abord le numéro que vous voulez trier la personne, puis entrez la méthode de tri 0 (par ordre décroissant) ou 1 (dans l' ordre croissant) ont été retapez leurs noms et leurs réalisations, séparés par un espace.
Séparés par un espace entre la manière déterminée en fonction de la sortie des noms et des partitions, des noms et des scores
Exemple 1:
Entrée
3
0
fang 90
yang 50
ning 70
exportation
fang 90
ning 70
yang 50
le contenu de l'étude: la structure tri
#include <bits/stdc++.h>
using namespace std;
#define MAXSIZE 100000
struct Student
{
string name;
double score;
int index;
};
int cmp2(Student a, Student b)
{//成绩从大到小排序
if(a.score == b.score)
return a.index < b.index;
return a.score < b.score;
}
int cmp1(Student a, Student b)
{//成绩从小到大排序
if(a.score == b.score)
return a.index < b.index;
return a.score > b.score;
}
int main()
{
int n, m;
while(scanf("%d %d", &n, &m)!=EOF)
{
Student *s = new Student[MAXSIZE];
for(int i = 0; i < n; i++)
{
cin>>s[i].name>>s[i].score;
s[i].index = i;//录入顺序
}
if(m == 0)
sort(s, s+n, cmp1);
else
sort(s, s+n, cmp2);
for(int i = 0; i < n; i++)
cout<<s[i].name<<" "<<s[i].score<<endl;
}
return 0;
}