问题标题: 酷町堂:1478 急!!!

0
0
已解决
李智宸
李智宸
高级守护
高级守护

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


0
已采纳
被禁言 高乐彤
高乐彤
修练者
修练者
函数定义:

结构体 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;

 

0
王禹樊
王禹樊
新手守护
新手守护

结构体 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;
    }

望采纳!!!

我要回答