资深守护
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;
}
中级天翼
就是结构体排序
但是我没有用到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;
}
这是排序的代码哦
其他的就是正常结构体输入,排序,结构体输出
望采纳
缔造者
主函数核心: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; }