2996 病人排队

孩子,别被误导了,结构体数组,咱们可以开两个的^^

#include<bits/stdc++.h>
#define f(i,s,e) for(int i = s; i <= e; i++)
#define ll long long
using namespace std;
const int N = 1e3+10,inf = 0x3f3f3f3f;
struct node{
    int id,age;
    string bh;
};
node a[N],b[N]; //a老年人,b非老年人 
int k1,k2; //k1老年人的人数,k2非老年人的人数 
bool cmp(node a,node b)
{    //老年人,年龄相同,顺序优先,否则年龄大的优先 
    if(a.age == b.age) return a.id < b.id;
    else return a.age > b.age;
}
int main()
{
    int n; cin >> n;
    f(i,1,n)
    {
        string bh;
        int age;
        cin >> bh >> age;
        if(age >= 60) //老年人,通过a[++k1]添加一个新的老年人到a数组 
            a[++k1].age = age,a[k1].bh = bh,a[k1].id = i;        
        else ////非老年人,通过b[++k2]添加一个新的老年人到a数组 
            b[++k2].age = age,b[k2].bh = bh,b[k2].id = i;
    }
    sort(a + 1,a + 1 + k1,cmp); //只对老年人进行排序 
    f(i,1,k1)
        cout << a[i].bh << endl;
    f(i,1,k2)
        cout << b[i].bh << endl;
    return 0;
}

 

posted @ 2024-06-28 17:34  CRt0729  阅读(14)  评论(0编辑  收藏  举报