高级光能
1478 银行业务排序新系统
题目描述 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<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
long long int n,a[100010],b[100010],f[100010],l[100010],m=0,ml=0;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i]>>b[i];
for(int i=1;i<=n;i++)
{
if(b[i]>=60)
{
f[i]=a[i];
m++;
}
else if(b[i]<60)
{
l[i]=a[i];
ml++;
}
}
sort(f+1,f+m+1,cmp);
for(int i=1;i<=m;i++)
cout<<f[i]<<endl;
sort(l+1,l+ml+1);
for(int i=1;i<=ml;i++)
cout<<l[i]<<endl;
return 0;
}
初级启示者
l和f数组是干嘛的,我看不懂。
还有
bool cmp(STU x,STU y) { if(x.c!=y.c)return x.c>y.c; //比较一个非老人与一个老人 if(x.c==y.c&&x.c==1&&x.b!=y.b)return x.b>y.b; //比较两个老人 if(x.b==y.b)return x.a<y.a; //比较两个年龄相同的人 return x.a<y.a; }
cmp的函数
what's this???