1 条题解

  • 0
    @ 2023-3-3 14:35:14
    /*
    	病人排队
    	编写一个程序,将登记的病人按照以下原则
    	排出看病的先后顺序:
    	1.老年人(年龄>=60)比非老年人优先看病。
    	2.老年人按年龄从大到小的顺序看病,
    	年龄相同的按登记的先后顺序排序。
    	3.非老年人按登记的先后顺序看病。
    	输入格式:
    	第一行为一个正整数n(n<=100),
    	表示病人的个数,后面按照病人登记的先后顺序,
    	每行输入一个病人的信息,包
    	括:病人的ID(每个病人的ID各不相同且只含数字和字母),一个整数表示病人的年龄。
    	输出格式
    	按排好的看病顺序输出病人的ID,每行一个。 
    */ 
    
    
    #include<iostream>
    #include<algorithm>
    using namespace std;
    struct patient{
    	string id;
    	int order;
    	int age;
    }p[101]; 
    bool cmp(patient a,patient b){
    	if(a.age<60&&b.age<60) return a.order<b.order;
    	else if(a.age>=60&&b.age>=60){
    		if(a.age==b.age) return a.order<b.order;
    		else return a.age>b.age;
    	}	
    	else return a.age>b.age;
    }
    int main(){
    	int n;
    	cin>>n;
    	for(int i=1;i<=n;++i){
    		cin>>p[i].id>>p[i].age;
    		p[i].order=i;
    	}
    	sort(p+1,p+n+1,cmp);
    	for(int i=1;i<=n;++i){
    		cout<<p[i].id<<endl;
    	}
    	return 0;
    }
    
    • 1

    信息

    ID
    308
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    7
    已通过
    2
    上传者