题目链接:http://pat.zju.edu.cn/contests/pat-a-practise/1028
相当纯粹的排序
// 最后一个测试点超时
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Stu
{
string id;
string name;
int grade;
};
vector<Stu> student;
int N, C;
bool cmpById(Stu a, Stu b)
{
return a.id<b.id;
}
bool cmpByName(Stu a, Stu b)
{
if(a.name != b.name)
return a.name<b.name;
else
return a.id<b.id;
}
bool cmpByGrade(Stu a, Stu b)
{
if(a.grade != b.grade)
return a.grade<b.grade;
else
return a.id<b.id;
}
void SortData()
{
switch(C)
{
case 1: sort(student.begin(), student.end(), cmpById); break;
case 2: sort(student.begin(), student.end(), cmpByName); break;
case 3: sort(student.begin(), student.end(), cmpByGrade); break;
}
}
void Output()
{
int i;
for(i=0; i<student.size(); i++)
{
cout << student[i].id << " " << student[i].name << " " << student[i].grade << endl;
}
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("E:\\in.txt", "r", stdin);
#endif
Stu t;
cin >> N >> C;
while(N-->0)
{
cin >> t.id >> t.name >> t.grade;
student.push_back(t);
}
SortData();
Output();
return 0;
}