问题标题: 酷町堂:1478 银行业务排序新**为啥10分???

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

 

 

#include<iostream>

#include<cstdio>

#include<string>

#include<algorithm>

using namespace std;

struct stu{

    int id;

    double sc;

}a[1050];

bool cmp(stu x,stu c){

    if(x.sc>=60){

        if(x.sc!=c.sc){

            return x.sc>c.sc;

        }

        return x.id<c.id;

    }

    return x.id<c.id;

}

bool cmp1(stu x,stu c){

    return x.id<c.id;

}

int main(){

int n;

cin>>n;

for(int i=1;i<=n;i++){

    cin>>a[i].id>>a[i].sc;

    }

    sort(a+1,a+n+1,cmp);

    for(int i=1;i<=n;i++){

        cout<<a[i].id<<"\n";

    }

    return 0;

}


0
已采纳
李牧晓
李牧晓
中级天翼
中级天翼

就是结构体排序

但是我没有用到id哦

bool cmp(stu a,stu b){

    if(a.n>=60||b.n>=60){

        if(a.n!=b.n) return a.n>b.n;

    }

    return a.h<b.h;

}

这是排序的代码哦

其他的就是正常结构体输入,排序,结构体输出

望采纳

0
朱小川
朱小川
缔造者
缔造者

主函数核心:for(int i=1;i<=n;i++){ cin>>a[i].a>>a[i].b; if(a[i].b>=60){ k++; } } sort(a+1,a+1+n,cmp); sort(a+1,a+1+k,cmp1); sort(a+k+1,a+1+n,cmp2); for(int i=1;i<=n;i++){ cout<<a[i].a<<endl; }

结构体核心:bool cmp(bl a,bl b){ return a.b>b.b; } bool cmp1(bl a,bl b){ if(a.b!=b.b){ return a.b>b.b; } return a.a<b.a; } bool cmp2(bl a,bl b){ return a.a<b.a; }

我要回答