萌新求助
  • 板块题目总版
  • 楼主LeoYe
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/1/24 15:32
  • 上次更新2023/10/28 11:18:51
查看原帖
萌新求助
614781
LeoYe楼主2022/1/24 15:32
这是一道简单的题,但我不知错在哪了

某地出现了灾害,各地派出了 nn 只救援队。这些救援队是在同一天出发的,但出发时间不一样,路程也有长有短,所以达到时间有先有后。

给定每个队伍的出发时间,以及每只队伍的路程,请按照到达时间为这些队伍排序,如果两只队伍到达时间正好相等,则出发时间靠前的队伍排在前列,如果出发时间仍然相同,则编号较小的队伍排在前列。

这是我的代码
#include<bits/stdc++.h>
using namespace std;
long long n;
struct hh{
	int x;
	char y;
	int z;
};
hh a[1005],b[1005];
int c[1005],d[1005],e[1005],f[1005];
int main(){
	cin >>n;
	for(int i=1;i<=n;i++){
		cin>>a[i].x>>a[i].y>>a[i].z;
		cin>>b[i].x>>b[i].y>>b[i].z;
		c[i]=a[i].x*60+a[i].z;
		d[i]=b[i].x*60+b[i].z;
		e[i]=c[i]+d[i];
		f[i]=i;
	}
	for(int i=1;i<n;i++){
		for(int j=1;j<n;j++){
			if(e[j]>e[j+1]){
				swap(e[j],e[j+1]); 
				swap(c[j],c[j+1]);
				swap(f[j],f[j+1]);
			}
			else if(e[j]==e[j+1]){
				if(c[j]>c[j+1]){
					swap(e[j],e[j+1]); 
					swap(c[j],c[j+1]);
					swap(f[j],f[j+1]);
				}
				else if(c[i]==c[i+1]){
					if(f[j]<f[j+1]){
						swap(e[j],e[j+1]); 
						swap(c[j],c[j+1]);
						swap(f[j],f[j+1]);
					}
				}
			}
		}
	}
	for(int i=1;i<=n;i++){
		cout<<f[i]<<endl;
	}
	return 0;
}

很简陋,不要喷,求求了

2022/1/24 15:32
加载中...