高级守护
1478 银行业务排序新**
经验值:1200 时间限制:1000毫秒
题目描述 Description
背景:生活中,去银行办理相关业务都是在大厅取号排队等候,取号号码一般是四位数(1000~9999),先来的取小号,后来的取大号。取号的越小越优先办理业务。
为了弘扬**传统美德,某银行准备**一套新的业务排序**,排序要求如下:老年人(年龄>=60)比非老年人优先办理 业务;老年人中按年龄从大到小优先排序,若年龄相同的按照取号的顺序排序;非老年人直接按取号顺序排序。请聪明的你设计这套**。
输入描述 Input Description
输入为n+1行;
第一行输入整数n(0<n<=1000),表示当前有n个人前来办理业务;
后面的n行,输入取号的号码和此人的年龄,两个整数之间用空格隔开。
输出描述 Output Description
输出为n行,表示排好队的顺序。
样例输入 Sample Input
5 1000 15 1001 61 1003 67 1004 33 1005 22
样例输出 Sample Output
1003 1001 1000 1004 1005
修练者
函数定义:
结构体 y{
int h,o;
}a[1005];
bool cmp(y a,y b){
如果(a.o和b.o不相等)
返回 a.o>b.o;
返回 a.h<b.h;
}bool cmp1(y a,y b){
返回 a.h<b.h;
}
整型变量 n,cnt=0;
主函数:
输入n;
for(从1到n){
输入a[i].h和a[i].o;
如果(a[i].o大于60)
cnt++;
}
sort(a+1,a+n+1,cmp);
sort(a+1+cnt,a+n+1,cmp1);
for(从1到n)
cout<<a[i].h<<endl;
新手守护
结构体 yh{
int id,age;
}a[1005];
布尔 cmp(yh a,yh b){
if(a.age>=60&&b.age>=60){
if(a.age!=b.age){
return a.age>b.age;
}else{
return a.id<b.id;
}
}
if(a.age<60&&b.age<60){
return a.id<b.id;
}
return a.age>b.age;
}
int n;
int main(){
输入n;
循环(1~n){
输入a[i].id和a[i].age;
}
排序(a+1,a+n+1,cmp);
循环(1~n){
输出a[i].id和endl;
}
望采纳!!!