某地出现了灾害,各地派出了 � n 只救援队。这些救援队是在同一天出发的,但出发时间不一样,路程也有长有短,所以达到时间有先有后。 给定每个队伍的出发时间,以及每只队伍的路程耗时,请按照到达时间为这些队伍排序,如果两只队伍到达时间正好相等,则出发时间靠前的队伍排在前列,如果出发时间仍然相同,则编号较小的队伍排在前列。c++
时间: 2023-06-17 22:06:57 浏览: 167
可以使用结构体来存储每只救援队的出发时间、路程耗时和队伍编号,然后按照到达时间从小到大排序,如果到达时间相同则按照出发时间从小到大排序,如果出发时间仍然相同则按照队伍编号从小到大排序。
具体实现如下:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
struct RescueTeam {
int start_time; // 出发时间
int time_cost; // 路程耗时
int team_id; // 队伍编号
};
bool cmp(RescueTeam a, RescueTeam b) {
if (a.start_time + a.time_cost != b.start_time + b.time_cost) {
return a.start_time + a.time_cost < b.start_time + b.time_cost;
} else if (a.start_time != b.start_time) {
return a.start_time < b.start_time;
} else {
return a.team_id < b.team_id;
}
}
int main() {
int n;
cin >> n;
RescueTeam teams[n];
for (int i = 0; i < n; i++) {
cin >> teams[i].start_time >> teams[i].time_cost;
teams[i].team_id = i + 1;
}
sort(teams, teams + n, cmp);
for (int i = 0; i < n; i++) {
cout << teams[i].team_id << " ";
}
cout << endl;
return 0;
}
```
输入格式如下:
```
5
1 5
2 3
0 7
4 5
6 2
```
输出格式如下:
```
3 2 1 5 4
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)