按级别排好序,先排消耗时间,相同排日期,再相同排时刻
#include <iostream>
#include <algorithm>
#include <sstream>
using namespace std;
const int N = 10010;
struct record {
string name; // 日志名称
string date; // 年月日
string start_time; // 时分秒
double task_time; // 消耗时间
string line;
}a[N];
// 按消耗时间升序排列,如果时间相同按时间顺序排序,按级别排好序
bool cmp(const record &a, const record &b) {
if (a.task_time < b.task_time) {
return true;
}
else if (a.task_time == b.task_time && a.date < b.date) {
return true;
}
else if (a.task_time == b.task_time && a.date == b.date && a.start_time < b.start_time) {
return true;
}
else {
return false;
}
}
// bool cmp(record &a, record &b) {
// if (a.task_time != b.task_time) {
// return a.task_time < b.task_time;
// }
// else {
// if (a.date != b.date) {
// return a.date < b.date;
// }
// else {
// return a.start_time < b.start_time;
// }
// }
// }
int main() {
string line;
int i = 0;
while (getline(cin, line)) {
a[i].line = line;
stringstream ssin(line);
ssin >> a[i].name >> a[i].date >> a[i].start_time >> a[i].task_time; // 不用管类型,ssin>>读入即可
i++;
}
sort(a, a + i, cmp);
for (int j = 0; j < i; j++) {
cout << a[j].line << endl;
}
return 0;
}

京公网安备 11010502036488号