题目概述与分析:
简单结构体+排序,分类讨论一下即可
//简单排序
#include<bits/stdc++.h>
using namespace std;
struct person
{
string id, name;
int score;
}personlist[101000];
bool cmp1(person a, person b)
{
return a.id < b.id;
}
bool cmp2(person a, person b)
{
return a.name != b.name ? a.name < b.name : a.id < b.id;
}
bool cmp3(person a, person b)
{
return a.score != b.score ? a.score < b.score : a.id < b.id;
}
int main()
{
int n, c;
cin >> n >> c;
for(int i = 0; i < n; i++)
{
cin >> personlist[i].id >> personlist[i].name >> personlist[i].score;
}
if(c == 1) sort(personlist, personlist + n, cmp1);
else if(c == 2) sort(personlist, personlist + n, cmp2);
else if(c == 3) sort(personlist, personlist + n, cmp3);
for(int i = 0; i < n; i++)
{
cout << personlist[i].id << " " << personlist[i].name << " " << personlist[i].score;
cout << endl;
}
return 0;
}
总结:
注意数组开的大小,符合题目要求。