某地出现了灾害,各地派出了 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;
}
很简陋,不要喷,求求了