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; }